摘要: 我觉得我还需要理解一下 FFT 和 NTT …#include #include #include #include const int maxn = 4e4+5, Mod = 950009857;const int G = 7;int n, m, k, N = 1;long lon... 阅读全文
posted @ 2015-08-11 23:34 <Dash> 阅读(169) 评论(0) 推荐(0) 编辑
摘要: poj2376bzoj3110 版权声明:本文为博主原创文章,未经博主允许不得转载。 阅读全文
posted @ 2015-08-11 23:30 <Dash> 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 可并堆,左偏树,这是神犇“顺手学的东西”以下是左偏树的合并操作代码。int merge(int x,int y){//p[i] 结点i的权值,这里是维护大根堆//d[i] 在i的子树中,i到叶子结点的最远距离. if(!x) return y; if(!y) return... 阅读全文
posted @ 2015-08-11 23:12 <Dash> 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 括号匹配,栈开始感觉题意很奇怪,表示这道题不会做。。。然而看了题解,原来并不是太难啊~!我太弱了,还是直接贴代码吧。。。#include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2015-08-10 22:52 <Dash> 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 如果确定了 ax 为最小值,那么包含 ax 并且以 ax 为最小值的区间个数是 O(N2) 的。因为序列中所有数的值非负,所以只需要考虑满足以上条件的最长区间即可。而包含 ax 并且以 ax 为最小值的最长区间可以用两次单调队列求出,最后对每个 ax 计算答案即可。#include ... 阅读全文
posted @ 2015-08-10 15:38 <Dash> 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 把转移方程优化一下,改变决策顺序就行了。。。#include #include #include #include #include #include #include #include #include #include #include #include #include tem... 阅读全文
posted @ 2015-08-10 15:37 <Dash> 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 很有趣的题啊,首先要知道从 1 开始,只走一条路径到达 n 的数字一定是连续的区间,先枚举确定答案 L,再通过拓扑排序 DP 计算最大的 R (DP过程中确定无向边的方向),当然我直接写了一个 SPFA 来更新 DP 值,然后就 AC 了~SPFA期望复杂度 : O(n+m)时间复杂... 阅读全文
posted @ 2015-08-09 17:38 <Dash> 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 终于理解树形依赖背包啦~这个树形DP的转移方程还是比较简单的。树形依赖背包的优化:设当前结点为 x,因为选取物品 x 需要强制选取物品 fa(x),所以直接令 dp(x)=dp(fa(x)) 并限制背包空间,然后处理 dp(son(x)),最后强制加入物品 x,即用 dp(x)+g(... 阅读全文
posted @ 2015-08-09 16:43 <Dash> 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 喜闻乐见的迭代加深搜索快速幂最多只需要 2∗logX 次就能得到想要的任何数然而这道题的答案会更小,迭代加深搜索显然是可以承受的。剪枝优化: 如果剩余的操作次数都用来将最大数与最大数相乘, 得到的结果仍然比希望得到的数小,那么这个状态就一定是不可行的#include #include... 阅读全文
posted @ 2015-08-08 23:42 <Dash> 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 似乎是NOI 2001的题目,感觉很有意思。。。Meet in the Middle (中途相遇法)看起来O(MN)不可做,方程移项有真相:k1∗xp11+k2∗xp22+k3∗xp33=−(k4∗xp44+k5∗xp55+k6∗xp66)分别计算 :k1∗xp11+k2∗xp22+... 阅读全文
posted @ 2015-08-08 22:28 <Dash> 阅读(181) 评论(0) 推荐(0) 编辑