L_0_Forever_LF的专栏

曾是一个OIer

BZOJ4883: [Lydsy2017年5月月赛]棋盘上的守卫

一个位于(i,j)的守卫只能控制i行或者j列 我们将这样的一个守卫视为连接i,j的一条无向边,那么我们的目标就是选出花费最小的一组边,使得对每条边定向后,每个点的入度恰好为1 那么对于每个联通块,他就是一个基环外向树,要求花费最小,类比最小生成树的建树过程,建一个最小生成环套树森林qaq 正...

2018-03-19 22:04:11

阅读数:47

评论数:0

BZOJ3847: ZCC loves march

每个点如果不考虑被分裂出去,他至多只会被合并一次,维护两个set,每次合并可以暴力找出这一行/列的所有点,并查集资瓷一下合并成一个点,每次分裂可以直接新建一个点代表这个分出去的点code:#include<set> #include<map> #include<deq...

2018-01-03 12:29:17

阅读数:208

评论数:0

BZOJ1119: [POI2009]SLO

建一个n个点的图,若ax在b中的位置是y,就连一条x->y的边,每次可以交换两个出度,代价是wx+wy,问让所有边连成自环的最小花费每个环显然选出最小的wx顺着环换,也可以额外花费一些,和其他环并在一起,用其他环的wx换 判一下就行了code:#include<set> #in...

2017-12-11 16:22:17

阅读数:107

评论数:0

BZOJ2811: [Apio2012]Guard

先将序列中不可能有忍者的位置标出来 如果剩下的位置恰好有K个,要特判直接全部输出然后将每个区间缩掉两端的0 如果存在某两个区间A,B,A包含B,那么A是不必要的 处理完后剩下的区间两两互不包含,按右端点排序后,从左到右左右端点递增 易知只有每个区间的右端点有可能一定有忍者,因为贪心的放肯定...

2017-12-05 11:14:04

阅读数:107

评论数:0

BZOJ3521: [Poi2014]Salad Bar

维护p-j的前缀和sum[i],那么一段l~r合法的充要条件是sum[l]<=sum[l~r],sum[r]>=sum[l~r],即中间的所有sum都>=sum[l],<=sum[r] 如果枚举了右端点r,i为r左边第一个i满足sum[i]>sum[r] ,令L=i...

2017-11-23 18:25:41

阅读数:100

评论数:0

codeforces 891C

给出一个无向图,每次询问图中的一个边集,是否存在包含这个边集的MST考虑怎么判断是否存在包含某一条边的MST 若他不在原图的MST上,显然只能尝试用它替换一条权值相等的,MST上的边 设他的权值为c,可以先对权< c的边先做kruskal建出生成树,用这些边将原图缩点 然后若这条边在这...

2017-11-19 17:15:00

阅读数:478

评论数:0

BZOJ1104: [POI2007]洪水pow

因为海拔底的水泵可以兹瓷抽海拔高的地方的水,所以我们按海拔高度从小到大处理每个小正方形 处理每个小正方形时,将它和相邻的不比他高的区域合并成一个联通块,因为他的水可以流到这些区域,每个高度合并完后,看这个高度的属于城市的区域,如果所在的联通块已有水泵,则这个水泵可以为这个区域抽水,否则需要给它所...

2017-09-24 19:50:25

阅读数:117

评论数:0

BZOJ1098: [POI2007]办公楼biu

题目说如果两点不在一个集合,那么他们之间一定有边,问最多有多少个集合 建出反图后,模型转化,变成如果两点不在一个集合,那么他们之间一定没有边,也就是说,两点之间有边就一定在一个集合 就相当于问反图有多少个联通块和每个联通块大小如果在反图上直接暴力,枚举每个点,将他连的点加进来,复杂度是n^2 ...

2017-09-23 20:48:45

阅读数:102

评论数:0

BZOJ4229: 选择

Orz liaoliao 首先把时间轴翻转,把删边操作变成加边操作 然后处理原来就在的边和所有加边操作,建一棵生成树,非树边就先不建上去再处理原来就在的非树边和加的非树边及询问, 如果是加一条边,将它连接的两点的路径上所有点并在同一个并查集 如果是询问,两点在同一个并查集,就是Yes,否则...

2017-04-26 09:36:43

阅读数:396

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭