摘要: 树上差分 感觉挺巧妙的。。。 每次更新就是在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 阅读(117) 评论(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 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 线段树+离线 这种题既可以用莫队做也可以用线段树做,跟hh的项链差不多 首先我们处里出前缀mex,也就是1->i的mex值,再预处理出每个数下一次出现的位置,然后把每个前缀mex插入线段树,每个节点表示l==r表示1->l的mex,然后把询问按左端点排序,依次查询,修改每次把小于当前左端点的数的影响 阅读全文
posted @ 2017-09-01 12:18 19992147 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 差分约束系统 按题目建边就行了,大于等于号是最长路,小于等于号是最短路,边由减号后面连向减号前面,边权是不等号后面的常数项 这里跑最长路,用dfs版spfa跑 #include<bits/stdc++.h> using namespace std; const int N = 10010; stru 阅读全文
posted @ 2017-09-01 12:13 19992147 阅读(102) 评论(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 阅读(110) 评论(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 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 计算几何 我们先把所有的线段求出来,我们发现只有两个线段等长且中点重合时才能构成矩形,那么线段有n*n条,我们按中点,长度排序,然后对于一条线段扫描所有符合条件的线段计算答案,这样看起来是O(n^3)次的,实际上远远到不了 但是1336和1765两道题空间较小,不能乱开空间 #include<bit 阅读全文
posted @ 2017-09-01 12:00 19992147 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 二分图匹配/并查集 其实我们发现,这里的方案就是希望从一开始一直能够被匹配上,那么我们就设立1-10000个点,一个装备向对应的属性连边,那么我们从1开始跑匹配,直到不能匹配结束。 但是这样很明显不是正解,我们把每个装备的两个属性之间连边,把小的属性连向大的属性,如果这两个属性已经相连,那么我们把大 阅读全文
posted @ 2017-09-01 11:55 19992147 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 卡特兰数 组合数优化 毫无头绪。。。 其实我们发现,我们可以把字符串的选择转换一下,我们建立坐标系,起初我们在原点(0,0),每次可以走(1,1)或(1,-1),希望最终到达(n+m,n-m),并且不经过y=-1 那么我们就可以用类似卡特兰数的方法解决这个问题,先算出随便走的方案数,我们一共要走n+ 阅读全文
posted @ 2017-09-01 11:37 19992147 阅读(123) 评论(0) 推荐(0) 编辑