摘要: 普通莫队:「BZOJ2038」小Z的袜子 带修改莫队:「BZOJ2120」数颜色 树上莫队:「UOJ58」[WC2013]糖果公园 阅读全文
posted @ 2018-03-08 16:43 Cupcake 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 这道题就是 「BZOJ1070」[SCOI2007]修车 的加强版 如果一开始把全部边连上会T 优化的方法是只连用到过和下一次增广可能用到的边。 阅读全文
posted @ 2018-03-08 15:43 Cupcake 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 最大流费用流二合一 注意跑费用流用的图要保留跑完最大流后的反向边 阅读全文
posted @ 2018-03-08 14:01 Cupcake 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 二维偏序问题 网上某篇博客讲三维偏序时拿这题举了例子 于是我辛辛苦苦码了一个三维偏序CDQ分治挂了N发后才A 然后冷静分析了一下发现是二维偏序啊! 然后又发现既然是二维偏序那么一发树状数组就可以水过啊!! 好气呀! 三维偏序CDQ分治版 二维偏序CDQ分治版 阅读全文
posted @ 2018-03-08 14:00 Cupcake 阅读(131) 评论(0) 推荐(0) 编辑
摘要: CDQ分治模板 注意三元组完全相等的情况 阅读全文
posted @ 2018-03-08 13:56 Cupcake 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 用CDQ分治实现了一下树状数组的功能,初步了解了CDQ分治的基本流程。 常数大概是树状数组的一倍吧。。 CDQ分治: 左区间只处理修改,右区间只处理询问。 即,考虑左区间的修改对右区间的询问产生的影响。 阅读全文
posted @ 2018-03-08 13:55 Cupcake 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 又臭又长的点分治+树上乱搞 阅读全文
posted @ 2018-03-08 13:54 Cupcake 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 相当于求边权和为3的倍数的路径条数 阅读全文
posted @ 2018-03-08 13:52 Cupcake 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 点分治 感觉像线性数据结构上的二分 或者说线性数据结构上的二分就是点分治的特殊情况 阅读全文
posted @ 2018-03-08 13:29 Cupcake 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 矩阵树定理 注意模数不是质数,不能用逆元 用了一种类似辗转相除的方法,非常巧妙 阅读全文
posted @ 2018-03-08 13:28 Cupcake 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 高斯消元模板 需要判断无解和多解 阅读全文
posted @ 2018-03-08 13:27 Cupcake 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 把能坐在一起的连边,求出点双连通分量,再对每个点双连通分量判一下是否存在奇环。 阅读全文
posted @ 2018-03-08 13:26 Cupcake 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 边双连通分量模板 求出边双连通分量,缩点后成为一个树。 若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那么 至少增加的边数 =( 这棵树总度数为1的结点数 + 1 )/ 2 阅读全文
posted @ 2018-03-08 13:25 Cupcake 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define ll long long 3 using namespace std; 4 const int N=510; 5 int n,T,ans1,cnt,siz,dfn[N],low[N],timer; 6 ll ans2; 7 bool vis[N],iscut[N],viscut[N]; 8 struct Edge{ 9 int ... 阅读全文
posted @ 2018-03-08 13:24 Cupcake 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 建出虚树 两遍dp求出虚树上的各点被哪个点管辖 再对虚树上的每一条边计算贡献 阅读全文
posted @ 2018-03-08 13:23 Cupcake 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 朴素算法O(n^3) 可用四边形不等式优化到O(n^2) 1 #include 2 using namespace std; 3 const int N=210,oo=2e9; 4 int n,a[N],f[N][N],p[N][N],ans1=oo,ans2; 5 int main(){ 6 scanf("%d",&n); 7 for(int i=1;if[j][k... 阅读全文
posted @ 2018-03-08 13:22 Cupcake 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 求平均时间最小就是求总时间最小 假设每个顾客对应的技术人员已经分配好了 那么技术人员在修某一辆车时对答案的贡献就是 time × 在排队的人数 所以可以想到把技术人员拆成n个点{mi1,mi2 ,……,min​ } 对于每个顾客,向mij​连一条容量为1,花费为 time*j 的边 求这个二分图的最 阅读全文
posted @ 2018-03-08 13:20 Cupcake 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define ll long long 3 using namespace std; 4 const int N=10010,maxn=10000; 5 int n,a[N],u[N],p[N],totp; 6 ll f[N]; 7 bool isp[N]; 8 inline ll calc(ll k){return k*(k-1)*(k-2)*(k-... 阅读全文
posted @ 2018-03-08 13:19 Cupcake 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define myp pair 3 #define mp make_pair 4 using namespace std; 5 const int N=30,N2=900,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1},oo=2e9; 6 int n,m,d,tot,super_s,super_t,h[N][N],sum; 7 inl... 阅读全文
posted @ 2018-03-08 13:18 Cupcake 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 建图很巧妙。 1 #include 2 #define ll long long 3 using namespace std; 4 const int N=4010; 5 const ll oo=3e18; 6 int tot,n,m,f,s,p,super_s,super_t; 7 struct Edge{ 8 int from,to; 9 ll flow,ca... 阅读全文
posted @ 2018-03-08 13:17 Cupcake 阅读(128) 评论(0) 推荐(0) 编辑