摘要:
本题枚举每多一个球需要多少个柱子,可以边加边边计算,每次只需要判断$i-Dinic()$即可;特别注意边界。#include #include #include #include #include #include #include #include using namespace std;temp... 阅读全文
摘要:
建图:从源点向单位连边,边权为单位人数,从单位向圆桌连边,边权为1,从圆桌向汇点连边,边权为圆桌容量。#include #include #include #include #include #include #include #include #include using namespace st... 阅读全文
摘要:
【转hzwer】第一问是LIS,动态规划求解,第二问和第三问用网络最大流解决。首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K。1、把序列每位i拆成两个点和,从到连接一条容量为1的有向边。2、建立附加源S和汇T,如果序列第i位有F[i]=K,从S到连接一条容量... 阅读全文
摘要:
建图:从源点向第一层连边,第一层表示当天用掉多少餐巾,第二层表示当天需要多少餐巾,所以注意购买餐巾的边容量为无穷大,要从源点开始连向第二层的点,每天可能有剩余,在第一层内表示为流入第二天的节点。具体见代码,第一次写费用流,不知道模板对不对。。。#include #include #include #... 阅读全文
摘要:
按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码。不知道为什么,代码慢的要死,,#include #include #include #include #include #include #include #include using namespace std;template... 阅读全文
摘要:
可持久化线段树模板题。#include #include #include #include #include #include #include #include using namespace std;int n,q,tot,a[110000];int root[2100000],L... 阅读全文
摘要:
将网格分为两部分,方法是黑白染色,即判断(i+j)&1即可,分开后从白色格子向黑色格子连边,每个点需要四条(边界点可能更少),也就是每个格子周围的四个方向。之后将源点和汇点分别于黑白格子连边,边权即为点权,最后用总权值减去最小割即可。#include #include #include #inclu... 阅读全文
摘要:
只需要把费用流的Spfa中的小于号改一下就好了,对于题目中要求要飞过去在飞回来,只需要一律把边的方向定为从顶点编号较小的向顶点编号较大的,把顶点1和n的边的容量定为2,其余边为1即可。#include #include #include #include #include #include #inc... 阅读全文