上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: 枚举x。一个x可行当且仅当,0,1,...,2^x-1都能被表示为S的一个子集的异或和。可以对S建线性基判断。然后每个值会对应一个S的子集,也就是对应一个S的线性基的子集。我们要构造一种方案,把2^x个S的线性基的子集排列,使得相邻两数只有一个二进制位不同。可以用格雷码 阅读全文
posted @ 2020-09-09 17:10 duyiblue 阅读(206) 评论(1) 推荐(0) 编辑
摘要: n为偶数时先手必胜。n为奇数时,所有数之和mod 2n=n,所以只需要找出一个和是n的倍数的方案即可。容易证明,一定存在一种方案,把mod n=0,1,2,...,n-1的数各选一次 阅读全文
posted @ 2020-09-07 12:31 duyiblue 阅读(349) 评论(3) 推荐(1) 编辑
摘要: 可以证明,我们总能通过巧妙地安排删除顺序,使得所有“理论上能被删除的数”都被删掉。那么,对于前i个数里最多能删多少个,容易得到递推式 f(i) = f(i-1) + [i>=a(i) and f(i-1)>=i-a(i)]。区间询问。我们对每个i,预处理出使得它能被删掉时,前面最多ban掉多少个数。预处理可以二分+主席树求。询问可以直接在主席树上查询。 阅读全文
posted @ 2020-09-07 10:48 duyiblue 阅读(708) 评论(2) 推荐(0) 编辑
摘要: 把覆盖,转化成插入,由此可以得到一个O(n^2)的DP。观察DP转移,发现答案是一堆短多项式的乘积。一般做法是分治FFT,不过本题里可以用倍增+二项式定理去掉一个log。 阅读全文
posted @ 2020-09-02 20:24 duyiblue 阅读(529) 评论(1) 推荐(0) 编辑
摘要: 提高十连测。大家快去氪金! 阅读全文
posted @ 2020-08-30 16:05 duyiblue 阅读(715) 评论(5) 推荐(1) 编辑
摘要: 设dp(i)表示i棵树必胜的方案数(第一棵树的根可以任意,所有根的方案数加起来)。转移时在前面添加一棵树。枚举添加的这棵树的根。发现系数之和可以预处理出来。不过对每个根都预处理一次,复杂度就是n^2了,所以要换根。求出系数之后,用矩阵快速幂优化这个DP即可。 阅读全文
posted @ 2020-08-29 12:11 duyiblue 阅读(943) 评论(7) 推荐(2) 编辑
摘要: 正睿2019CSP赛前冲刺,大部分是戴大爷的题,质量很高,能学到一些有用的套路 阅读全文
posted @ 2020-08-26 14:36 duyiblue 阅读(465) 评论(1) 推荐(1) 编辑
摘要: 2019年CSP前的六校联考,那时候大家难度还没有飙起来,还是有不少好题的。 阅读全文
posted @ 2020-08-26 14:35 duyiblue 阅读(417) 评论(2) 推荐(1) 编辑
摘要: m=n-1时一定有解,策略是取最小的和最大的原材料拼成一道菜,然后转化为m,n分别小1的子问题递归下去。m>=n时,可以先取最大的原材料,直到m=n-1。m=n-2时,用DP将所有原材料,划分成两个m=n-1的集合。DP的状态设计比较巧妙,同时需要用到bitset优化 阅读全文
posted @ 2020-08-26 11:31 duyiblue 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 先做一个二维DP:dp[u][i]表示点u的祖先边中离它最近的,颜色为1的边,深度为i,此时节点u子树内的边的染色方案数。然后把第二维搬到线段树上,做线段树合并 阅读全文
posted @ 2020-08-25 00:12 duyiblue 阅读(608) 评论(0) 推荐(1) 编辑
摘要: 朴素DP,设dp[i][u]表示第i个时刻在第u个点,总共得到的最大愉悦值。用矩阵快速幂优化,需要重新定义一种max运算的矩阵乘法,它也具有结合律。拆边可以完成转移。改成拆点可以进一步优化复杂度。我们要对k个美食节间的每一段时间单独做一次快速幂,太慢了。发现转移矩阵是一样的,可以预处理转移矩阵的2^x幂,就变成log T次向量乘矩阵的乘法。时间复杂度O((5n)^3 log T + k*(5n)^2 log T) 阅读全文
posted @ 2020-08-21 21:33 duyiblue 阅读(407) 评论(4) 推荐(1) 编辑
摘要: 树形DP。设dp[u][x]表示,u的所有祖先(不含u)对u的贡献和为x时,u的子树内最少还需要进行多少次操作。设u和它的祖先的贡献和为y。则dp[u][x]可以从sum(dp[v][y]) + [y!=x] 转移过来。x可能很大,不过可以证明,我们只需要考虑所有l,r这些端点。所以离散化一下即可 阅读全文
posted @ 2020-08-14 19:22 duyiblue 阅读(229) 评论(0) 推荐(0) 编辑
摘要: dp[i]表示考虑了前i个,且第i个是某一段结尾,获得的最大总价值。dp[i]可以从dp[i-R ~ i-L]转移过来,可以用单调队列维护这样的区间。做前缀和后,对每个前缀和的值(-n~n共2n+1个值)开一个单调队列。用线段树维护这些单调队列(每个叶子节点上是一个单调队列的最优值)。转移时做区间最大值查询即可。 阅读全文
posted @ 2020-08-14 15:21 duyiblue 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 继《生活在树上》后,浙江某考生发表了续作《生活在仙人掌上》。文章的发出引起了计算机科学界的巨大反响。小编有幸获得了这篇文章的转载权,能在博客中收录这篇文章。 阅读全文
posted @ 2020-08-13 14:11 duyiblue 阅读(495) 评论(1) 推荐(3) 编辑
摘要: 考虑每个gcd对答案的贡献。这不好求。可以先求gcd至少是d时对答案的贡献(也就是gcd是d的倍数),然后再容斥回去。多次询问时,考虑预处理答案,从n-1向n递推,则只有d是n的约数会有变化,这样的d总量是O(n log n)的。但我们不能每次重新做一遍容斥。可以把容斥转化为给每个d一个贡献系数,这样d的贡献值变化时,只要拿变化量乘以系数即可。 阅读全文
posted @ 2020-08-06 23:49 duyiblue 阅读(267) 评论(1) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页