2016年11月11日

BZOJ1070

摘要: 费用流。 源点连到n辆车,容量为1,费用为0 把每个工人拆成n个点,对于第j个工人第p个点,表示该工人 倒数 第p个完成该任务的代价,因为你现在做的任务不会影响到你的前几个任务,只会给后面添加代价,所以n辆车连到这些点,容量为1,代价为map[i][j]*p 这些点再连到汇点,容量为1,代价为0 最 阅读全文

posted @ 2016-11-11 21:11 Notok 阅读(177) 评论(0) 推荐(0) 编辑

2016年11月10日

BZOJ1066

摘要: 网络流。 坐标为(i,j)的石柱编号为(i-1)*m+j 源点到所有有蜥蜴的石柱建一条容量为1的边,表示一开始就有蜥蜴被石柱生出来。 所有的石柱拆成入点和出点,之间连一条容量为石柱高度的边,达到限流的目的。 石柱的出点连到所有与它平面距离小于d的石柱入点,容量无限。(无数只蜥蜴在空中跨越而过) 若在 阅读全文

posted @ 2016-11-10 20:51 Notok 阅读(767) 评论(0) 推荐(0) 编辑

BZOJ2438

摘要: 强连通。 只需要访问一个点就可知道它那个连通分量的所有点的情况,而入度为0的连通分量才是需要优先确认的目标,所以只需要计算有几个入度为0的连通分量。 如果在整个图中,有一个点(这个连通分量里只有一个点!!!)它所连的点都能被其它点访问到(入度大于1),就可以不访问它也可以知道它身份(除了它以外的点都 阅读全文

posted @ 2016-11-10 13:40 Notok 阅读(167) 评论(0) 推荐(0) 编辑

2016年11月9日

BZOJ1051

摘要: 强连通。 若只存在一个强连通分量出度为0(树根,万人敬仰),答案就是这个强连通的节点数。 若存在多个,答案即为0 #include<cstdio> #include<cstdlib> #include<cstring> #define min(x,y) (x<y?x:y) struct mod{in 阅读全文

posted @ 2016-11-09 21:04 Notok 阅读(139) 评论(0) 推荐(0) 编辑

BZOJ1433

摘要: 二分图匹配。 把人和床分在图两边,若床存在(在校学生),人与该床的主人有关系,就可以连边。 要注意自己可以匹配自己的床! 回家的人就不需要床了!!空出一张床 #include<cstdio>#include<cstdlib>#include<cstring>bool bed[51];bool hom 阅读全文

posted @ 2016-11-09 13:49 Notok 阅读(117) 评论(0) 推荐(0) 编辑

2016年11月8日

BZOJ1854

摘要: 一种武器两个能力值,只能选其一,一个武器只能用一次。 第一次选一个能力值为1的,第二次选能力值为2的······ 问最多能选到多少能力值。 把两个能力值与武器连一条边,跑二分图匹配,看看知道多少能力值无法被匹配即为ans 对于vis数组有一个神奇的处理,不用每次都初始化。 #include<cstd 阅读全文

posted @ 2016-11-08 13:48 Notok 阅读(133) 评论(0) 推荐(0) 编辑

XJOI2016提高组模拟题一 排队

摘要: 就是这样一道题了。 维护这一棵树。 对于第一种操作,我们从题意可知,节点的访问顺序就是DFS序,至于先小后大的限制,只需要用伟大的STL-sort来逐层排序就很好了,代码简洁,时间复杂度低。 按DFS序把这些点存入优先队列,如果该点没人,就在该队列中,人的流动先后顺序就可以用出入优先队列来维护。 对 阅读全文

posted @ 2016-11-08 13:07 Notok 阅读(196) 评论(0) 推荐(0) 编辑

导航