上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 53 下一页
摘要: 并查集+数学 这道题网上好像有两种解法。 这位写的很可读:http://blog.csdn.net/unicornt_/article/details/51901225 然后看完大概就懂了做法,但是实现上还有很多细小的地方。 cnt要-1,因为第一行和第一列会算两次。 数组要开四倍。 至于为什么要拆 阅读全文
posted @ 2017-06-28 19:47 19992147 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 斜率优化 那个并查集还是A不掉,就做一些其他的。 一开始并不能写出dp方程,但是有这个结论,分割的顺序不影响答案,那么就很好写出了。 dp[i][k]=dp[j][k-1]+(sum[i]-sum[j])*sum[j] 因为顺序不影响答案,所以我们就可以看成从后往前一段一段割,所以就是先割掉i,再割 阅读全文
posted @ 2017-06-26 20:25 19992147 阅读(156) 评论(0) 推荐(0) 编辑
摘要: fhqtreap 其实fhqtreap只有可持久化之后才用新建节点。。。 reverse和splay一样。 //#include<bits/stdc++.h> #include<cstdio> #include<algorithm> using namespace std; typedef long 阅读全文
posted @ 2017-06-26 15:38 19992147 阅读(200) 评论(0) 推荐(0) 编辑
摘要: A:暴力枚举 模拟 #include<bits/stdc++.h> using namespace std; const int N = 60; int n; int a[N][N]; int main() { scanf("%d", &n); for(int i = 1; i <= n; ++i) 阅读全文
posted @ 2017-06-26 10:42 19992147 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 主席树+脑洞 首先我们有一个结论:如果我们已经凑出1-n,那么下一个数必须小于等于n+1才能凑出n+1,否则结束。 那么如果只有一次询问,我们把数组排序,然后扫一遍看每个数当前能不能加入。但是多组询问就不行了,这是我们就要用主席树。 主席树是权值线段树,我们维护区间和,但是我们不能扫一遍,就得进一步 阅读全文
posted @ 2017-06-25 22:34 19992147 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 可持久化treap 抄了个模板。 可持久化treap和主席树一样,都是利用了以前的节点来节省空间。但是却又有些不一样。可持久化treap基于两种操作:merge和split。其他操作都是由这两种操作完成,除了build。这两种操作都要满足第一颗treap的所有节点都是小于第二颗treap,这样才能l 阅读全文
posted @ 2017-06-25 22:29 19992147 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 日本人的比赛 C:如果两个数差了大于1无解,否则分类讨论 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 100010, mod = 1000000007; int n, m; ll a 阅读全文
posted @ 2017-06-25 11:46 19992147 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 脑洞 很早以前没有补掉的题目 四色问题肯定使有解的,然后就是怎么构造。注意到边长是奇数,那么我们就可以分类,按左上角坐标的奇偶性分类,正好对应四种颜色。因为当两个矩形左上角横纵坐标奇偶性不同时,那么肯定不会相邻,所以可以任意填,否则分类就可以了。 #include<bits/stdc++.h> us 阅读全文
posted @ 2017-06-24 22:43 19992147 阅读(109) 评论(0) 推荐(0) 编辑
摘要: tarjan求割点 我发现我还不会求割点 首先我们发现如果整个图是一个点双,那么要放两个出口。答案是2 c(n, 2) 如果不是,说明这个图存在割点能把图分成很多个部分,那么我们就要把割点求出来,每个点双和割点缩成一个点,这样就构成了一棵树。然后每个度数为一的点都要放一个出口,如果度数大于一就不用放 阅读全文
posted @ 2017-06-24 22:19 19992147 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 线段树+概率 今天这道题爆零了,奥妙重重。 其实我们可以把式子化成这样:sigma((i-l+1)*(r-i+1)*ai) 这里r减了1 然后展开,(1-l)*(r+1)*ai+(r+l)*i*ai-i*i*ai 我们发现除了含有i的项其他都可以提到外面,也就是说我们要维护ai,i*ai,i*i*a 阅读全文
posted @ 2017-06-23 17:09 19992147 阅读(129) 评论(0) 推荐(0) 编辑
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 53 下一页