上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 53 下一页
摘要: KMP 我似乎复杂度写的不对。。。 因为位置相同只算一次,后缀数组什么的都不管用了,我们就暴力kmp,但是我写的是暴力跳。。。竟然过了。。。我写bzoj3670才发现。。。 #include<cstdio> #include<cstring> #include<algorithm> using na 阅读全文
posted @ 2017-09-05 21:08 19992147 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 虚树+树形dp 虚树一类问题是指多次询问,每次询问的点数较少,如果我们每次都对整棵树进行遍历,那么自然是不行的,这时我们就构造出一棵虚树来降低复杂度 具体构建就是把一些无用的点缩起来。我们考虑对于一个点包括自己和这个点的子树,我们怎么构建虚树。 我们把所有点按dfs序排序,也就是模拟出dfs的过程, 阅读全文
posted @ 2017-09-03 19:55 19992147 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 二维线段树 听说二维线段树不能下传标记? 就是裸的二维线段树,由于每次高度只能增加,所以我们就可以标记永久化 每个线段树里有两个数组,mx和mark,每次修改路径上所有mx都要修改,mark是区间的精确覆盖修改 每次查询把路径上所有mark取max,然后和精确覆盖区间mx取max 为什么这样做呢?我 阅读全文
posted @ 2017-09-03 19:42 19992147 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 树上差分 感觉挺巧妙的。。。 每次更新就是在u,v上+1,x是lca(u,v),在x和fa[x]上-1,那么每个点的权值就是子树和,正确性yy一下就行了 不过树状数组的常数真是小,改成前缀和才快了200ms #include<bits/stdc++.h> using namespace std; c 阅读全文
posted @ 2017-09-01 14:30 19992147 阅读(120) 评论(0) 推荐(0) 编辑
摘要: A:略坑 枚举l-r,看是否能整除k且商的范围是不是在x,y里 #include<bits/stdc++.h> using namespace std; int l, r, x, y, k; int main() { cin >> l >> r >> x >> y >> k; for(int i = 阅读全文
posted @ 2017-09-01 13:53 19992147 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 线段树+离线 这种题既可以用莫队做也可以用线段树做,跟hh的项链差不多 首先我们处里出前缀mex,也就是1->i的mex值,再预处理出每个数下一次出现的位置,然后把每个前缀mex插入线段树,每个节点表示l==r表示1->l的mex,然后把询问按左端点排序,依次查询,修改每次把小于当前左端点的数的影响 阅读全文
posted @ 2017-09-01 12:18 19992147 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 差分约束系统 按题目建边就行了,大于等于号是最长路,小于等于号是最短路,边由减号后面连向减号前面,边权是不等号后面的常数项 这里跑最长路,用dfs版spfa跑 #include<bits/stdc++.h> using namespace std; const int N = 10010; stru 阅读全文
posted @ 2017-09-01 12:13 19992147 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 差分约束系统 我们把前缀和看成一个点,每个点之间的关系就是sum[i]-sum[j-1]=?,然后我们拆成sum[i]-sum[j-1]>=?和sum[j-1]-sum[i]>=-?,大于等于号是跑最长路,边从b连向a,边权是符号后面的常数项,然后跑最长路就行了,我们可以用dfs版spfa跑 #in 阅读全文
posted @ 2017-09-01 12:10 19992147 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 二分+贪心+动态规划 第一问就是二分+贪心,和跳石头挺像的 第二问是dp,dp[i][j]表示第i次切割切到了第j段木棍,转移就是dp[i][j] = sigma(dp[i-1][k]), sum[j]-sum[k]<=ans,ans是最大长度,这里第j段木棍表示现在正在分割1-j这些木棍。很明显这 阅读全文
posted @ 2017-09-01 12:07 19992147 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 计算几何 我们先把所有的线段求出来,我们发现只有两个线段等长且中点重合时才能构成矩形,那么线段有n*n条,我们按中点,长度排序,然后对于一条线段扫描所有符合条件的线段计算答案,这样看起来是O(n^3)次的,实际上远远到不了 但是1336和1765两道题空间较小,不能乱开空间 #include<bit 阅读全文
posted @ 2017-09-01 12:00 19992147 阅读(154) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 53 下一页