上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页
摘要: 运用唯一分解定理,考虑 x 的质因数构成。对小于等于 sqrt(n) 的质数暴力查询。对大于 sqrt(n) 的质数,可以有两种方法。若小质数部分 x_small > 1,则对每个大质数 p,查询 p * x_small 是否还在集合里。若 x_small = 1,对大质数序列分块。先确定 x 在哪块里,再暴力查询。 阅读全文
posted @ 2020-11-12 13:34 duyiblue 阅读(383) 评论(2) 推荐(1) 编辑
摘要: 考虑把 DAG 分层,用状压 DP 来实现这个过程。每次转移增加一层,必须满足所有能到达新层的点,都在原点集里出现过。把每条边的代价,分摊到它跨过的每一层里。也就是每次转移,代价是:所有起点已经在 S 里,终点不在 S 里的边的边权之和。 阅读全文
posted @ 2020-11-09 22:07 duyiblue 阅读(599) 评论(0) 推荐(3) 编辑
摘要: NOIP/CSP-S,考场上的注意事项。考场上写代码和平时有什么不一样?要小心什么?考试时的策略,时间应该如何分配?怎样思考问题?还有一些常见套路的总结!!!可以帮助更快地想出题目! 阅读全文
posted @ 2020-11-06 08:57 duyiblue 阅读(3730) 评论(28) 推荐(15) 编辑
摘要: 可以将 a 序列排序。枚举 p,q 上每个位置 i 对答案的贡献。枚举 p,q 上第 i 位的元素分别为 aj, ak。根据 j,k 的大小关系分类讨论一下,用组合数算出方案数,时间复杂度 O(n^3)。单独枚举 j 和 k,分别计算贡献(正的或负的,需要分类讨论一下),即可做到 O(n^2)。然后拿着 O(n^2) 的式子,把它化成卷积的形式,就能得到 O(n log n) 做法,可以通过本题。 阅读全文
posted @ 2020-11-01 22:40 duyiblue 阅读(353) 评论(1) 推荐(1) 编辑
摘要: 题目来源:Codeforces,#678,Codeforces Round #678 (Div. 2),CF1436;CF1436E Complicated Computations,CF1436F Sum Over Subsets。 CF1436E Complicated Computations 阅读全文
posted @ 2020-10-28 23:49 duyiblue 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 拆方差。拆成三个部分,前两个部分是类似的。我们改变枚举方式,用桶存储出现次数,并做 NTT,就能求出。第三部分,基于前面 NTT 的结果,进行容斥。分类讨论一下,即可求出。 阅读全文
posted @ 2020-10-25 18:37 duyiblue 阅读(189) 评论(0) 推荐(1) 编辑
摘要: 考虑把整个方案紧密排列在一起,需要的格子数是 sum (p(i) - p(i - 1)) + 1,是 O(n^2) 级别的。剩下的格子插板插进去即可,可以用组合数计算。而这 O(n^2) 个格子的方案,可以用 DP 计算出来。最后插板乘组合数时,由于模数不是质数没有逆元,不好直接求。需要用先矩阵快速幂预处理出 C(下界, 0...n),再把上下界之间的都暴力递推出来 阅读全文
posted @ 2020-10-07 23:26 duyiblue 阅读(327) 评论(5) 推荐(3) 编辑
该文被密码保护。 阅读全文
posted @ 2020-10-04 19:01 duyiblue 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 不会删边,考虑倒序操作,删边变加边。但操作 1 又只能正序进行。所以考虑倒序加边建出重构树,然后正序处理操作 1。用线段树维护重构树的 dfs 序即可。 阅读全文
posted @ 2020-09-30 11:39 duyiblue 阅读(240) 评论(0) 推荐(1) 编辑
摘要: 树形DP。转移时将儿子按 h 的大小关系分成三类。枚举和 h[u] 相等的儿子里,有几个定向为向上,则可以贪心地取 dp[v][0] - dp[v][1] 前若干大的。 阅读全文
posted @ 2020-09-30 11:11 duyiblue 阅读(321) 评论(1) 推荐(0) 编辑
摘要: 转化为最小化每一段的代价之和。设 dp[i][j][k] 表示考虑了前 i 个位置,第 i 个位置放了 1,用了 j 次操作,前 i 个位置共放了 k 个 1,此时的最小代价和。转移时枚举下一个 1 的位置,时间复杂度 O(n^5),可以用斜率优化优化到 O(n^4 log n) 阅读全文
posted @ 2020-09-25 11:49 duyiblue 阅读(539) 评论(6) 推荐(7) 编辑
摘要: 核心观察:如果固定 l,则随着 r 的增大,[l,r] 的字典序单调下降。于是,当确定了 [l,r] 后,可以用双指针 + 线段树,求出它的排名,并求出以每个点为左端点时,哪一段右端点的区间是大于 [l,r] 的,哪一段右端点的区间是小于 [l,r] 的。随机化二分。每次随机一个 [l,r],求出它的排名,并期望删掉一半的区间。 阅读全文
posted @ 2020-09-23 20:47 duyiblue 阅读(49) 评论(1) 推荐(0) 编辑
摘要: 转化为,每个点的贡献是 (1/2) 的 (排在它后面的数的数量 + 1) 次方,对这个东西求和。于是就是一道纯数据结构题。用枚举值、枚举端点、拆每个点的贡献、离线预处理,等等常见的技巧,经过巧妙的结合,即可解决本题。 阅读全文
posted @ 2020-09-20 01:39 duyiblue 阅读(72) 评论(1) 推荐(0) 编辑
摘要: 考虑LIS和LDS相交的部分,四个点一定形成了一种特定的结构。充分利用LIS和LDS的性质后,发现可以直接用扫描线求出这样的结构。 阅读全文
posted @ 2020-09-15 00:06 duyiblue 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 总硬币数>=10^6时,你总能花完尽可能多的钱!当总硬币数<10^6时,发现策略是唯一的,可以暴力模拟:只需要模拟前10^6次,后面就循环了! 阅读全文
posted @ 2020-09-14 00:27 duyiblue 阅读(54) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 14 下一页