摘要: 单调栈 正着插一遍反着插一遍 记录每个点左边右边第一个比他高的。。。 yyc太强辣 #include<iostream> #include<cstdlib> #include<algorithm> #include<cstdio> #include<cmath> #include<cstring> 阅读全文
posted @ 2017-10-23 19:34 探险家Mr.H 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 给出一个N个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大 n<=1000000 发现当根从某个位置移到它的一个子树时只要O1的时间就可以果断得出ans 所以大概就一个dfs完事 #include<iostream> #include<cstdlib> #include<algori 阅读全文
posted @ 2017-10-23 19:04 探险家Mr.H 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 给定一个n个点m条边的图,每条边有黑白两色,求出恰好含need条白边的最小生成树 最小生成树。。。仿佛并没有什么dp的做法 大概还是个kruskal的板子再加点什么东西 考虑到“恰好含need条白边”我们可以用一点小技巧让kruskal“少选白边”或者“多选白边” 再看一眼数据范围 E<=100 好 阅读全文
posted @ 2017-10-23 17:33 探险家Mr.H 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 给定一个无向有权图,首先一个最小生成树 MST,从 MST 中选取一个度数大于 1 的点 作为根 K,使每颗子树及该子树到根的边权之和方差最小。输出 K 和最小方差的值。 对于60%的数据:3 ≤ N ≤ 2,000,N-1 ≤ M ≤ 50,000 对于100%的数据:3 ≤ N ≤ 40,000 阅读全文
posted @ 2017-10-23 16:40 探险家Mr.H 阅读(497) 评论(0) 推荐(0) 编辑
摘要: GTMD天天爱跑步 #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<vector> using namespace std; const int N=319998,P=300001; int 阅读全文
posted @ 2017-10-20 20:55 探险家Mr.H 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include #include using namespace std;int match[maxn],link[maxn][maxn],used[maxn],ans; bool find(int u) { memset(used,0,sizeof(used)); /*for(int i=first[u]... 阅读全文
posted @ 2017-10-20 20:25 探险家Mr.H 阅读(192) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int t[250010][26]; in 阅读全文
posted @ 2017-10-20 20:15 探险家Mr.H 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 卡特兰数 打表 滑稽 #include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> #include<cmath> #include<cstring> using namespace std; string cat 阅读全文
posted @ 2017-10-20 17:50 探险家Mr.H 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 背包问题小合集 01背包 完全背包 多重背包混着来 对于01背包:把它想象成最大物品数为1的多重背包 对于完全背包:把它想象成最大物品数为m/w[i]的多重背包 对于多重背包:把它想象成。。。等等这本来就是个多重背包 数据比较水 但是我也写了个倍增优化 #include<iostream> #inc 阅读全文
posted @ 2017-10-20 17:47 探险家Mr.H 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 多重背包问题 一开始我们的转移方程是 然后我们发现T了 有一个简单的优化 最内层k是从0-c[i]相当于一条链 对于一条链我们很容易想到倍增 然后我们优化: 对于第i个物品,我们把它拆成若干份:取1个 取2个 取4个 取8个 ... 取2^(一大堆)个 取剩下的那么多个 这样可以把最内层循环变成lo 阅读全文
posted @ 2017-10-20 17:44 探险家Mr.H 阅读(274) 评论(0) 推荐(0) 编辑