- 博客(177)
- 收藏
- 关注
转载 NTT 分类: templates 2015-...
我觉得我还需要理解一下 FFT 和 NTT … #include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> const int maxn = 4e4+5, Mod = 950009857; const int G ...
2015-08-11 23:34:00
212
转载 ToDoList 分类: introspect ...
poj2376 bzoj3110 版权声明:本文为博主原创文章,未经博主允许不得转载。 转载于:https://www.cnblogs.com/dashgua/p/4722942.html...
2015-08-11 23:30:00
298
转载 zoj 2334 分类: zoj templa...
可并堆,左偏树,这是神犇“顺手学的东西” 以下是左偏树的合并操作代码。 int merge(int x,int y) { //p[i] 结点i的权值,这里是维护大根堆 //d[i] 在i的子树中,i到叶子结点的最远距离. if(!x) return y; if(!y) return x; if(p[x] < p[y]) s...
2015-08-11 23:12:00
269
转载 hdu 5357 2015-08-10 22:52 7人阅读 评论(0) 收藏...
括号匹配,栈 开始感觉题意很奇怪,表示这道题不会做。。。然而看了题解,原来并不是太难啊~! 我太弱了,还是直接贴代码吧。。。 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <c...
2015-08-10 22:52:00
199
转载 poj 2796 分类: poj 2015-0...
如果确定了 ax 为最小值,那么包含 ax 并且以 ax 为最小值的区间个数是 O(N2) 的。 因为序列中所有数的值非负,所以只需要考虑满足以上条件的最长区间即可。 而包含 ax 并且以 ax 为最小值的最长区间可以用两次单调队列求出,最后对每个 ax 计算答案即可。 #include <cstdio> #include <cstdl...
2015-08-10 15:38:00
181
转载 poj 1821 分类: poj 2015-0...
把转移方程优化一下,改变决策顺序就行了。。。 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <string> #include <...
2015-08-10 15:37:00
134
转载 codeforces 366D 分类: codeforces ...
很有趣的题啊,首先要知道从 1 开始,只走一条路径到达 n 的数字一定是连续的区间, 先枚举确定答案 L,再通过拓扑排序 DP 计算最大的 R (DP过程中确定无向边的方向), 当然我直接写了一个 SPFA 来更新 DP 值,然后就 AC 了~ SPFA期望复杂度 : O(n+m) 时间复杂度:O(m∗(n+m)) #include <cst...
2015-08-09 17:38:00
187
转载 hdu 3593 分类: hdu 2015-0...
终于理解树形依赖背包啦~ 这个树形DP的转移方程还是比较简单的。 树形依赖背包的优化: 设当前结点为 x,因为选取物品 x 需要强制选取物品 fa(x), 所以直接令 dp(x)=dp(fa(x)) 并限制背包空间,然后处理 dp(son(x)), 最后强制加入物品 x,即用 dp(x)+g(x)来更新 dp(fa(x)) 即可。 这样就在强制选取...
2015-08-09 16:43:00
169
转载 poj 3134 分类: poj 2015-0...
喜闻乐见的迭代加深搜索 快速幂最多只需要 2∗logX 次就能得到想要的任何数 然而这道题的答案会更小,迭代加深搜索显然是可以承受的。 剪枝优化: 如果剩余的操作次数都用来将最大数与最大数相乘, 得到的结果仍然比希望得到的数小,那么这个状态就一定是不可行的 #include <cstdio> #include <cstdlib...
2015-08-08 23:42:00
222
转载 poj 1186 分类: poj 2015-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+k3∗xp33=W 的解数fL(W) k4∗xp44+k...
2015-08-08 22:28:00
103
转载 poj 1379 分类: poj templa...
传说正解是V图,想想都觉得难写。。。 模拟退火~ 随机取几个点,将温度设置为随机范围,然后随机爬山算法即可。。。 如果参数设置得比较优,就可以在精度范围内取得最优解。。。 所以暂时就不学V图了(反正写不出) 注意如果用G++交题的话,要用 %f 输出。。。 我以后还是用C++交题吧,虽然语法比较严格,但不像G++那样不规范。。。 #incl...
2015-08-08 22:17:00
149
转载 poj 1568 分类: poj templa...
博弈搜索,Alpha−Beta 剪枝 Alpha−Beta 剪枝: 令 alpha = max{beta = min{alpha′}} 如果在搜索的过程中,beta<=alpha,那么beta 对 alpha的值将没有贡献,对 beta 不必继续搜索。 同理,如果 alpha′>=beta,那么alpha′ 对 beta的值将没有贡献,对 ...
2015-08-08 16:09:00
166
转载 codeforces 558C 分类: codeforces ...
将每个数转成二进制的形式,可以发现对每个数的操作只会使二进制数中的 ‘1’减少, 而有效的目标状态一定不大于 max{a[i]}, 所以每个数能扩展出的有效状态只有 2*log max{a[i]} 种,而这个范围是非常小的。。。 可以用搜索处理出每个数能扩展出的有效状态以其代价。 最后枚举目标状态,更新答案即可。 #include <cstd...
2015-08-08 14:15:00
292
转载 template 分类: templates ...
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <string> #include <map> #include <vector&...
2015-08-08 13:55:00
164
转载 codeforces Round 314 div.2 分类: code...
这次比赛是用小号打的,于是现在小号比大号rating高。。。QwQ A题和B题很简单不多说。 C题:统计子序列中长度为3,公比为 k 的等比序列的个数。 从后往前处理,分别统计满足条件长度为1,2,3的序列的个数, f(i,j)=∑f(i−1,t)|t=j∗k,实现时离散化一下就好~ 然而,当时只判断了 a[i]*k<=a[max] ,而没...
2015-08-08 13:52:00
155
转载 bzoj 1999 分类: bzoj noip...
树网的核 加强版,好题~ 可以证明,如果存在多条直径,选取任意一条直径都是等价的。 证明: 如图,考虑两条直径 AB, CD,其中它们的重合部分为 EF A B \ / \ ...
2015-08-07 23:37:00
177
转载 bzoj 2821 分类: bzoj 2015...
因为强制在线,所以无法用莫队算法。。。 将序列分块,设块的大小为 X。 首先预处理出第 i 块到第 j 块的答案,复杂度O(N2X)。 然后对于每个询问,我们对整块以外的数重新计算对答案的贡献即可。 时间复杂度 O(NX∗logN) 根据基本不等式,每块的大小为 N/logN−−−−−−−√。 时间复杂度:O(M∗N∗logN−−−−−−−√) ...
2015-08-07 18:38:00
200
转载 bzoj 2743 分类: bzoj 2015...
这道题的方法虽然应用不广,但很有意思。 主要是维护起始点固定时,每个结束点的答案 每个点记录下一个与它颜色相同的点的位置,记为next[]。 首先对于所有首次出现的点 x,将 next[x] ~ n 的答案都增加 1 然后就得到了当起始点为1时,每个结束点的答案。 如果起始点pos向右移动,next[pos]~next[next[pos]] - 1 ...
2015-08-07 18:22:00
129
转载 hdu 5068 分类: hdu 2015-0...
一道好题~ 用矩阵代替DP方程。 对于每个房间构造一个矩阵mat,mat[i][j] = 1 或 0 表示 i 到 j 是否能到达。 然后线段树每个结点维护区间区间矩阵乘法的结果 对于询问操作用矩阵乘法合并区间即可。 #include <cstdio> #include <cstdlib> #include <...
2015-08-07 18:07:00
174
转载 bzoj 3211 分类: bzoj 2015...
分析一下,每个数最多只会做5次开根操作就会小于或等于1,在这之后它的值就不会改变。。。 用线段树记录区间的最大值,然后只对max > 1 的区间做开根操作即可。 时间复杂度:O(M∗logN+N) #include <cstdio> #include <cstdlib> #include <cstring> ...
2015-08-07 18:00:00
136
转载 bzoj 2879 分类: bzoj temp...
动态加点KM 这个KM模型已经比较常见了: http://blog.youkuaiyun.com/cyxhahaha/article/details/44657619 构图: X 侧点为对菜品的需求,Y 侧点为厨师对菜品的供应 如果让 i 厨师在倒数第 t 次制作菜品 j,花费时间为 cost(i,j)∗t 记 sp=∑p[i],如果把每个厨师拆成 sp ...
2015-08-07 17:52:00
133
转载 bzoj2118 分类: bzoj 2015-...
这题很有意思哦~ 以最小的非零系数为模数,记为 M 如果存在 W 使方程有解,W 与 W’ 在模意义下同余并且 W < W’,那么 W’也使方程有解。 设 dist(i) 为满足 W mod M = i 时 W 的最小值,用最短路求出dist,然后计算答案就行了~ 分别统计1~Wmax,1~Wmin-1中满足 W mod M=i 的W的个数 ...
2015-08-07 17:15:00
183
转载 错误集锦 分类: introspect 201...
1.非void类型的函数没有返回值 [Dev-C++开启“编译警告”可以防止此问题] 2.hash数组使用之前没有清零 3.字符串hash时,hash值存在0 4.平衡树的Rotate函数,先pushdown儿子后pushdown父亲。 5.连接双向边时,空间没有开边数的两倍。 continuing…… ...
2015-08-07 16:44:00
125
转载 bzoj2127 分类: bzoj templ...
最小割,差异代价模型。 #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <iostream> #include <algorithm> const int maxn ...
2015-08-07 16:33:00
90
转载 NOI 2015 分类: noi 2015-0...
我只会做送分题。。。 Day1 T1 离散化+并查集 T2 树链剖分,线段树维护区间内元素个数 Day2 T1 Huffman树,Huffman树是严格k叉树是比较好处理的,所以加入一些权值为0的点使得 点数 mod (k - 1) = 1 #include <cstdio> #include <cstdlib> #...
2015-08-06 22:22:00
225
转载 QTREE3 分类: templates sp...
树链剖分,线段树维护区间内最近黑点。 写起来很爽。。。 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <vector> #incl...
2015-08-06 22:09:00
103
转载 bzoj 1036 [LCT version] 分类: templat...
LCT。单个操作时间复杂度O(logN),然而常数巨大。 杨哲《QTREE解法的一些研究》 黄志翱《浅谈动态树的相关问题及简单拓展》 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include &l...
2015-08-06 22:05:00
121
转载 SPOJ - UNTITLE1 分类: spoj ...
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=22254 You are given a sequence of N integers A1, A2 .. AN. (-10000 <= Ai <= 10000, N <= 50000) Let Si denote the...
2015-08-06 17:40:00
234
转载 bzoj 1030 分类: bzoj temp...
AC自动机模板 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <string> #include <map> #includ...
2015-08-06 17:34:00
113
转载 NOIP-字符串 分类: uva bzoj ...
LA 4670 AC自动机 void pattern() { memset(count, 0, sizeof(count)); int sl = strlen(str); TrieNode *now = root; for(int i = 0; i < sl; i++) { now = now...
2015-08-06 17:30:00
153
转载 最大权闭合子图 分类: bzoj poj ...
参考论文:胡伯涛《最小割模型在信息学竞赛中的应用》 闭合子图的定义: 定义一个有向图 G=(V,E) 的闭合图是该有向图的一个点集,且该点集的所有出边指向的点属于该点集,即闭合图内的任意点的任意后继也一定在闭合图中。 如何求解最大权闭合子图? 用最小割来解决。 题目:poj2987bzoj1497hdu3879 poj29...
2015-08-06 16:54:00
237
转载 NOIP-贪心,递推,枚举,模拟 分类: noip ...
bzoj2241 枚举矩形的长和宽,判断是否可行。时间复杂度:O((n*m)^3) 剪枝:1.最优化剪枝 2.如果矩形面积不能整除地图点权之和,则直接判断不可行。 const int maxn = 105, maxm = 105; int n, m, sum, ans; int map[maxn][maxm]; int tmp[maxn][maxm...
2015-08-04 08:31:00
234
转载 poj3093 分类: poj 2015-07...
枚举最终无法选取的最小物品,那么显然比这个物品代价小的物品都必须要选。 对于比这个物品代价大的物品,DP计算方案数即可。 至于物品价值相同的根据排序之后的顺序视为不同就可以了。 设 dp(i,j) 表示选取i~n个物品,花费j元的方案数, dp(n+1,0)=1,dp(i,j)=dp(i+1,j)+dp(i+1,j−c[i]) 假设此时无法选取的最小物品...
2015-07-20 10:50:00
182
转载 hdu4003 分类: hdu 2015-07...
很有有意思的树形DP 题意: 给一棵n个结点的树, 结点编号为1~n, 每条边都有长度. 有k个机器人从S点出发, 问让机器人遍历所有边,最少路程和是多少? 1<= n <=10000, 1 <= S <= n, 1 <= k <= 10 如果让一个机器人从根出发,遍历所有树之后再回到根, 那么花费一定是...
2015-07-20 10:37:00
232
转载 poj1155 分类: poj 2015-07...
树形背包 #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <string> #include <map> #include &...
2015-07-20 10:24:00
109
转载 poj2486 分类: poj 2015-07...
一颗树,n个点,每个点上有一个权值, 求从1出发,最多走k步,遍历到的点的最大权值和 (每个点权对权值和最多只能贡献一次) (1 <= n <= 100, 0 <= k <= 200) f(i,j,k) 在 i 的子树内走 j 步回到 i 点(k=0)/不回到 i 点(k=1)的最大收益 然后DP即可,时间复杂度 O(n∗k2...
2015-07-20 10:21:00
155
转载 zoj2112 分类: templates z...
树状数组套主席树 好像没有什么特别的地方,就是要注意卡空间。 先处理出初始序列的主席树 O(N∗log(N+M)) 然后用树状数组记录修改 O(M∗logN∗log(N+M)) 时间复杂度/空间复杂度: O((N+M∗logN)∗log(N+M)) #include <cstdio> #include <cstdlib...
2015-07-20 10:14:00
173
转载 poj 3974 分类: poj templa...
Manacher算法, 用来解决 最长回文子串 一类问题,俗称马拉车算法,时间复杂度 O(n) #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> const i...
2015-07-05 22:24:00
118
转载 bzoj 1004 分类: bzoj 2015...
大神的题解 无限仰慕中。。。 看来我还并不会 polya 定理。 #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define REP(i...
2015-06-29 21:31:00
81
转载 codeforces #310 div2 D 分类: codeforc...
如果 Lj+1−Rj<=ai<=Rj+1−Lj, 那么就可以在第 j 个小岛和第 j+1 个小岛之间建一座长度为 ai 的桥梁, 当然,每个桥梁只能使用一次。 很明显可以想到二分图匹配,X 侧点表示相邻小岛之间的连线,Y 侧点表示桥梁, Lj+1−Rj<=ai<=Rj+1−Lj⟹G(j,i)=true。 然而复杂度是 O(n∗...
2015-06-29 20:03:00
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅