摘要: 又是套路啊 黑白染色,S,T连不同色的,求最小割,用总和-最小割即为答案 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <math.h> # define ll 阅读全文
posted @ 2018-01-02 20:24 Cyhlnj 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 套路啊 棋盘黑白染色,S连黑,白连T,黑白间根据骑士的走法连边,求出最小割 最大独立集=点数-最小点覆盖;最小点覆盖=最大流=最小割 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> 阅读全文
posted @ 2018-01-02 20:22 Cyhlnj 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 最大权闭合子图:等于正边权 - 最大流(最小割) 我的理解 最大收益就是要求最小损失,那么用最小割模型(别问我是怎么想到的) S向实验连边,表示割掉这条边,把实验割给T会有损失 T向配置连边,表示割掉这条边,把配置割给S会有损失 跑出的最小割(最大流)就是损失 # include <stdio.h> 阅读全文
posted @ 2018-01-02 20:11 Cyhlnj 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 枚举放的球,先假设新建柱子,拆成两个点,第一个点连S,表示后面还可以放;第二个连T表示放到其他柱子上;再枚举放过的数和它是否组成完全平方数,枚举的数的第一个点向它的第二个点连边,表示这个球可以放到其他球上,容量都为一 每次跑最大流出来的表示会消掉的柱子个数,如果此时球-消去的比n大则break输出答 阅读全文
posted @ 2018-01-02 20:02 Cyhlnj 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 我的方法比较复杂 S向每个仓库连初始量的边,每个仓库拆成两个,后往前连INF边,前往T连平均值的边,边权都是0 再S每个仓库向相邻仓库的第二个点连INF边,边权为1 再费用流即为答案 # include <bits/stdc++.h> # define RG register # define IL 阅读全文
posted @ 2018-01-02 19:49 Cyhlnj 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 这是一道毒瘤题 只要线段树维护一个矩形的四个点的连通性即可 合并时请想清楚,要大讨论一番 询问有可能存在跨区间的联通情况,只要把询问的区间分成[1,l],[l,r],[r,n]再大讨论一番即可 如果你不想讨论或者讨论出错,你可以使用并查集,每次开并查集更新,这样就不用大讨论一番了,但是会慢,时间几乎 阅读全文
posted @ 2018-01-01 20:16 Cyhlnj 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 先把问题简化,怎样求一个点x和y的lca的deep和 显然直接求LCA,但是这样的话,要求多个就不好叠加 于是可以用奇技淫巧:先把x到根的所有点打上标记,那么询问y到根的标记的个数即为答案,这样就可以叠加 所以对于询问,拆成[1,l-1], [1, r],排序后依次加点覆盖标记即可 可以用树链剖分+ 阅读全文
posted @ 2017-12-31 20:26 Cyhlnj 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 树链剖分+线段树 线段树维护max,min,左往右的最大差,右往左的最大差 求LCA时一定要注意方向 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, 阅读全文
posted @ 2017-12-30 17:47 Cyhlnj 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 按位从高往低贪心,枚举到第i位,只需要判断这2^i长度的区间是否有菜,用主席树就可以了 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof( 阅读全文
posted @ 2017-12-30 14:41 Cyhlnj 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 这道题可以用LCT做,开set,LCT,二叉树 操作1:直接开set,找到它要插入的位置,一定是前驱,后缀中deep最大的(显然手玩) 操作2:set+LCT询问路径,直接手动提上去,因为树的形态不变 操作3:同2 操作4:LCT::Cut,手动删除 操作5:同4 没了 记得手动更新二叉树(这个一定 阅读全文
posted @ 2017-12-30 10:30 Cyhlnj 阅读(207) 评论(0) 推荐(0) 编辑
摘要: luogu题面 这道题是NOI起床困难综合症改编而来的 思路是一样的 这道题我们考虑用LCT维护,每个节点维护两个值 一个为中序遍历这棵子树的ans0,ans1(分别表示0和INF(二进制下全为1)跑的答案) 另一个为中序遍历的反向遍历这棵子树的ans0,ans1 还要记得保存这个点的初始操作 考虑 阅读全文
posted @ 2017-12-30 09:01 Cyhlnj 阅读(172) 评论(0) 推荐(0) 编辑
摘要: ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次) # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof 阅读全文
posted @ 2017-12-30 08:15 Cyhlnj 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 分块基本没有限制 所以每次大于等于b就分一块 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace s 阅读全文
posted @ 2017-12-29 22:24 Cyhlnj 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 与i分数相同的人数的区间[a[i] + 1, n - b[i]] 设f[i]表示确定了i个人后满足要求的最大人数 对于一个区间[l, r],用map弄出它的个数num,f[r] = max(f[l - 1] + num) 其实不用排序,挂条链就可以了 # include <bits/stdc++.h 阅读全文
posted @ 2017-12-29 20:20 Cyhlnj 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 拆点跑费用流,套模板 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef 阅读全文
posted @ 2017-12-29 19:22 Cyhlnj 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题面 二分后用网络流判定 S->人,流量为二分的mid 人->比赛,流量为1 比赛->T,流量为1 输出方案只要判断a就可以了 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) 阅读全文
posted @ 2017-12-29 17:39 Cyhlnj 阅读(171) 评论(0) 推荐(0) 编辑
摘要: Splay模板题(很难调) # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typed 阅读全文
posted @ 2017-12-29 16:52 Cyhlnj 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 最小割 让相邻的最小割上的点层数差小于等于d,也就是大于d时S,T仍然能相通 那么可以从下面d层向上面相邻的点连容量为INF的边 表示相邻的最小割上的点层数差大于d时,还能走这条INF边回来,流其它的路到T,这样就强制要小于等于d了 # include <bits/stdc++.h> # defin 阅读全文
posted @ 2017-12-29 11:31 Cyhlnj 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 费用流+最大流 先一遍最大流 再所有边扩容,新加节点限制扩容量k # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) # defin 阅读全文
posted @ 2017-12-29 10:35 Cyhlnj 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 裸的最小割然而我还是太菜了,没看见有零的格子,WA了两遍 # include <bits/stdc++.h> # define IL inline # define RG register # define Fill(a, b) memset(a, b, sizeof(a)) # define Co 阅读全文
posted @ 2017-12-29 09:57 Cyhlnj 阅读(163) 评论(0) 推荐(0) 编辑