上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要: 传送门 找到$n$的两个约数$p_1, p_2$,使得$gcd(p_1+p_2, n) = 1$ gcd的一些性质 \(gcd(a, b) = gcd(a, b - a) = gcd(b, a % b)\) 若$gcd(a, b) = 1$,则$gcd(a, b) = gcd(a + b, a * 阅读全文
posted @ 2020-12-25 17:22 Emcikem 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 首先可以知道对于和,与操作,他不会改变两个数字的二进制中1的总个数 比如 | 第一位 | 1 | 0 | 0 | | : : | :--: | :--: | :--: | | 第二位 | 1 | 1 | 0 | | 和操作 | 1 | 0 | 0 | | 与操作 | 1 | 1 | 0 | 可以发现 阅读全文
posted @ 2020-12-25 13:55 Emcikem 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 传送门 类似于qq的,有人给你发消息,那么他就会变成第一个。最后让你求每个人的最小排名和最大排名 首先,对于发过消息的人,最小排名是1,没有发过消息的,最小排名就是他的初始位置$i$ 对于没有发过消息的,那么他的最大排名就是看所有发过消息的人里面,有多少个人编号大于自己,那么自己就往后多少名 对于发 阅读全文
posted @ 2020-12-11 12:18 Emcikem 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 传送门 给出两个数组$a,b$,需要对每一个$i$进行操作,\(ans += a[i]\),如果说$b_i ≠ -1$,那么就把$a[b[i]] += a[i]$ 求出$ans$和操作的下标情况 首先分析一下如果对于所有的$b[i]≠-1$的情况,如果$a[b[i]]$加上了$a[i]$,那么$a[ 阅读全文
posted @ 2020-12-10 20:19 Emcikem 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 求出在$[1, b]$里有多少个数字的$F(i) \leq F(a)$ 首先算出$F(a)$的值,然后套一下数位dp板子即可 同时记录其权值变化,对于每一个base就是$2^$ 但是选择记录当前权值然后最后比较是否小于等于$F(a)$是不行的 因为记忆化搜索就会记录有多少个权值是小于第一个$F(a) 阅读全文
posted @ 2020-12-09 12:35 Emcikem 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 求出$\sum_^n [gcd(n, i) == 1] i ^ 4$ 即求出$[1,n]$里面与$n$互质的数的四次方和 考虑互质,想到唯一分解求出n的所有质因子,然后利用这些质因子容斥求出所有不符合的数字的四次方和 然后求出所有的和,减去不符合的值就是答案。 \[ \sum_{i=1}^{n} i 阅读全文
posted @ 2020-12-08 16:12 Emcikem 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 传送门 就是给你n个数字,m次查询,查询gcd为$a_i$的区间有几个 因为是gcd,并且是区间查询,那么考虑$ST$表进行$O(1)$查询,而且,在$ST$表里面,gcd是不递增的序列,那么就可以进行二分查找 那么再去考虑对于每一个左区间,查询它的所有右区间的gcd值,考虑到,前一个gcd值肯定是 阅读全文
posted @ 2020-12-07 17:07 Emcikem 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 传送门 $1e9$的数据,让你找到 数字里包含13 且是13的倍数。 包含13子串很好找,就是普通的数位dp模板,$pre == 1 \ and \ i == 3$就行了 数字是13的倍数,本来可以记录一下当前的数字为什么,最后再判断一下就行了,但是为了记忆话搜索,就就必须修改策略 考虑每次都取模, 阅读全文
posted @ 2020-12-04 10:15 Emcikem 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 给出两个字符串$a,b$,在$a$中找一个子串,$b$中找一个子串,求最大贡献值 考虑$dp[i][j]$表示a中以$i$结尾,b中以$j$结尾时的最大值 考虑如果两个字符相同,那么值就加2,\(dp[i][j] = max(dp[i - 1][j - 1], 0) + 2\) 如果两个字符不相同, 阅读全文
posted @ 2020-11-30 16:56 Emcikem 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 传送门 操作: 区间$[1, x]$进行修改,把$a_i = max(a_i, y)$ 区间查询,求最大的$r$,满足$sum(x,r) \leq y$ 维护一下区间最大值和区间最小值,考虑到如果说某个区间的最大值$\leq y$,那么就变成了区间覆盖了,把区间的值都变成$y$。 如果说区间最小值都 阅读全文
posted @ 2020-11-24 14:48 Emcikem 阅读(94) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2020-11-18 02:07 Emcikem 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 传送门 每次从区间的左端点选择或者从右端点进行选择 逆着就是从中间进行向两边进行扩展。 因为左区间是向左边扩展,右区间是向右区间扩展,二维遍历一下左右区间,左区间是从[n,1],右区间是[i+1,n] 因为当前区间是[i,j],表示已经进行了j - i次,当前是n - (j - i)次操作 状态转移 阅读全文
posted @ 2020-11-17 19:52 Emcikem 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 在二维dp里面,得到了dp值,那么反着变量,如果当前的dp值等于ans,那么当前值就是满足的解,并且ans--。 比如在最长上升子序列里面 ans就是最长上升子序列的长度。 因为如果当前值就是ans的话,表示当前值是更新后的值。 printf("%d\n", ans); std::vector<in 阅读全文
posted @ 2020-11-16 22:32 Emcikem 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 传送门 首先把题目给的边加入,然后对于火车来说,加入火车边有可能似的路径更短,所以说把火车的边也要加进去,那么最后看下起点到k个终点的路径的最短路是通过火车直达的还是通过其他边到达的就行了。 就是这一步,如果说火车到达v点,而起点到v点的最短路小于火车的路径,就拆掉,如果等于路径,看一下到达这个点的 阅读全文
posted @ 2020-11-10 19:04 Emcikem 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 传送门 给出一个序列,最大化区间和减去该区间的最大值 首先,如果是对于负数的情况,答案肯定是0 那么只需要知道正数的情况即可 枚举最大值,然后进行查找就行了,套最大连续子序列和 如果说存在a[i] > mx,就相当于这一段区间的最大值不是这个,就重新计算区间和 #include <iostream> 阅读全文
posted @ 2020-11-06 18:55 Emcikem 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 博弈的题大多数用sg函数打表找规律 博弈的题大多数用sg函数打表找规律 博弈的题大多数用sg函数打表找规律 记忆话搜索可以更快 记忆话搜索可以更快 记忆话搜索可以更快 理解 定义sg值为0时表示后手必胜,sg为1时为先手必胜。 那么对于每一个人,都会去查找使得当前状态变成sg值为0的情况 那么就是说 阅读全文
posted @ 2020-11-02 22:25 Emcikem 阅读(970) 评论(0) 推荐(0) 编辑
摘要: 积性函数和完全积性函数在欧拉筛里的情况 对于函数$f(x)$ 然后式子$f(x y) = f(x) * f(y)$ 如果说只有x和y互质的时候才成立,那么$f(x)$是一个积性函数 如果说对于任意的x和y都成立,那么$f(x)$是一个完全积性函数 在线性筛里面,如果说$f(x)$是一个积性函数,那么 阅读全文
posted @ 2020-10-29 15:46 Emcikem 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 传送门 除去常数,就是一个广义斐波那契数列,加上常数,就是把原来的二维矩阵变成三维矩阵 但是常数是在变化的,而利用整除分块的思想发现,在同一块的$\frac$是相同的。所以只需要维护两个值,$fn_1$表示该分块的第一个元素的前面第一个值,$fn_2$表示该分块的第一个元素的前面第二个值。 整除分块 阅读全文
posted @ 2020-10-26 17:03 Emcikem 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 给出一个广义斐波那契数列,求套娃后的值 这不是傻逼题吗?来几个循环节就行了 暴力求循环节 #include<cstdio> #define ll long long const ll MOD = 1e9 + 7; int main() { ll a, b; // f[n] = (bf[n - 1] 阅读全文
posted @ 2020-10-16 11:49 Emcikem 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 传送门 一般肯定会想到取拆$(a + b)n$得到$an + bn$,但是得不到 就需要把$f(n) = an + bn$,然后去构造一个辅助方程直接得到结果 那么令$(an +bn) (a + b) = a(n + 1) + b^(n + 1) + abn + ban$ 那么就能得到$f(n) = 阅读全文
posted @ 2020-10-13 08:47 Emcikem 阅读(81) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页