
水题
Chester_King
虽千万人,吾往矣。
展开
-
【POJ】1273 Drainage Ditches 网络最大流
这是一道经典的网络最大流的题目,个人认为这题入门小白……题目大意:现在有m个池塘(从1到m开始编号,1为源点,m为汇点),及n条水渠,给出这n条水渠所连接的池塘和所能流过的水量,求水渠中所能流过的水的最大容量.方法一:EK(Edmonds_Karp)方法二:Dinic原创 2017-02-16 10:36:53 · 410 阅读 · 0 评论 -
【POJ】3259 Wormholes bellman-ford | SPFA
诶,真的是越活越回去了,现在打的程序还不如以前了,慢的爆炸……(先测的是bellman-ford,后测的是SPFA)题目大意:FJ想要进行时光旅行,现在有F个农场,对于每个农场,已知该农场有N片农田,M条小路,W个虫洞。其中小路是双向的,虫洞是单向的。对于每条小路,有S,E,T三个参数:S和E表示小咯两端农田的序号,通过这条小咯需要的T的时间。对于每个虫洞,同样有S,E,T三个参数:S原创 2017-02-18 14:01:14 · 427 阅读 · 0 评论 -
【BZOJ】1433 [ZJOI2009]假期的宿舍 二分图的最大匹配
题目的意思非常明显,就是告诉你一些人之间的关系,一些床位可以容纳一些人。问在校且不回家的人数加上外来人数是否能被所有床位容纳。这题需要注意每次求二分图的最大匹配之前的初始化,我就是在这里WA了好几次……之后只要贴上匈牙利算法的模板就好了。其实这题也可以用网络最大流来做,但是我觉得好像并不需要如此装B吧……附上AC代码:#include #include using name原创 2017-02-28 19:50:54 · 686 阅读 · 0 评论 -
【BZOJ】 1001 [BeiJing2006]狼抓兔子 网络最大流
题目传送门:BZOJ1001%%%LYF大神,打的是SPFA,如果不用vector和queue,肯定比我跑的快……说实话,如果这题的数据造的强大一些,我的dinic应该是要被卡掉的。这题我打的是网络最大流,也是我看了题目后想到的第一种解法。主要是建图,要好好想想,怎样把二维的图转换成一维的n*m个点。附上AC代码:#include #include using na原创 2017-03-15 18:42:48 · 342 阅读 · 0 评论 -
【CODE[VS]】2822 爱在心中 强连通分量
题目传送门 其实这题还是挺水的,强联通分量的正解也是比较好想的。 对于题目的第一问,只要求节点数大于1的强联通分量个数就好了。 对于题目的第二问,只要求节点数大于1且出度为0的强联通分量中的所有节点编号就行了。 小提示:这题有两个要注意的地方:第二问的答案要求该强联通分量的节点数大于1。(我就是在这里WA了好多次,以后一定要注意读题,汗……)还是第二问,在输出每个强联通分量中的节点编号之原创 2017-04-10 20:34:18 · 508 阅读 · 0 评论 -
【BZOJ】1051 [HAOI2006]受欢迎的牛 强联通分量
其实本不想发这题的题解的,但是为了提醒自己不再犯错,还是发一波吧。 这题依旧是比较水的强联通分量,只要求所有出度为0的强联通分量的节点数总和就行了。 按理来说,我应该是比较轻松的就会过掉的…… 但是! 因为自己的粗心,忘了考虑有多个强联通分量出度为0…… 于是,WA了好几次…… 好吧,无论做什么题目,不管有多么简单,都应该认真对待,狮子搏兔亦用全力!附上AC代码:#include <cs原创 2017-04-10 21:12:11 · 410 阅读 · 0 评论 -
【BZOJ】2456 mode 模拟
题目传送门其实这是一道考思想的题目,不能说是模拟吧。一开始我还不知道怎么做,想了好多,看了题解后才恍然大悟。(恍然大悟你妹啊,原来题目保证有解的啊,我说这个题解怎么是对的)记录一下当前出现过的最多的数字pre和出现的次数sum,然后读入下一个数x,首先判断sum是否为0,若sum==0,则sum=1,pre=x,跳过循环。然后若x==pre,则++sum,否则--sum。附上A原创 2017-04-14 16:11:21 · 418 阅读 · 0 评论 -
【洛谷】3381 【模板】最小费用最大流
题目传送门划水啊,就是最小费用最大流的模板,只是标记一下自己会了这种算法。正解就是SPFA+EK,在SPFA扩展的过程中加入EK的判断——这条边的流量是否还有剩余。然后在所有节点都扩展完毕后进行EK的流量修改,最后统计答案。附上AC代码:#include #include #include #include using namespace std;struct no原创 2017-04-16 18:31:10 · 488 阅读 · 0 评论 -
【POJ】2135 Farm Tour 最小费用最大流
题目传送门这题用到了最小费用最大流,一条边的容量为1,代价为这条边的长度。建立超级源点通向节点1,容量为2,代价为0;节点n通向超级汇点,容量为2,代价为0。之后刷一遍最小费用最大流就行了。注意:这题里的边都是双向边,比方说从节点x到节点y和从节点y到节点x是不同的走法。附上AC代码:#include #include #include #include using原创 2017-04-16 20:57:18 · 589 阅读 · 0 评论 -
【BZOJ】1029 [JSOI2007]建筑抢修 贪心+堆
题目传送门今天的时间好少啊,晚自修还要去听专题报告,都没有时间刷题了,只有打一道水题练练手了。这题的解题思路是贪心,对每个节点的T2进行排序,然后从小到大修最多的建筑就行了。但是这个贪心的思路是有问题的:如果T2最小的节点i的T1很大,但是在i的T2范围内有许多节点的T1很小,不就GG了?所以我们可以用一个堆来维护当前维修的所有建筑的T1,然后枚举下一个节点,若这个节点可以直接维修原创 2017-04-18 15:57:26 · 557 阅读 · 2 评论 -
【BZOJ】1293 [SCOI2009]生日礼物 (这题有多种解法)
题目传送门这题的解法主要分为三种,接下来我会详细讲解。一、首先,我们来看最慢的一种方法,但也是代码量最少的一种——堆。我们用一个小根堆H来存所有的节点的x坐标,然后对每一种彩珠开一个小根堆,每次从H中取最小的一个坐标,然后枚举每一种颜色,若这种颜色的堆顶坐标小于H的堆顶坐标,就把这个堆顶弹掉,然后判断下一个堆顶,直到:1.当前堆顶坐标不小于H的堆顶坐标;2.当前的堆为空。对于第一种原创 2017-04-19 20:25:04 · 538 阅读 · 1 评论 -
【BZOJ】3211 花神游历各国 【CODE[VS]】2492 上帝造题的七分钟2 线段树
题目传送门又是一次帕金森,多打等号WA6次——真的伤心啊。这题的正解是线段树,应该还是比较好想的。对于修改操作,对于给定的区间中的每一个节点做单点修改,将该节点的值变为sqrt(该节点的值),之后就是线段树的维护了。这题真的比较水,线段树连延迟标记都没有用到。附上AC代码:#include #include #include #define lt (k<<1)#de原创 2017-04-21 21:28:33 · 308 阅读 · 0 评论 -
【BZOJ】1922 [Sdoi2010]大陆争霸 带限制最短路
题目传送门这题一开始还真的没有什么思路,虽然说题目意思是求最短路,但是那个结界真的讨厌啊……然后点开了hzwer学长的博客……好吧,我承认我看题解了……发现这题的正解是带限制的最短路。用d1数组记录到达当前节点需要的时间,d2数组记录拆掉这个节点的所有结界发生器需要的最短时间,因此到这个节点的最短时间就是min(d1,d2)。然后就是最短路径的模板了……附上AC代码:#in原创 2017-04-24 19:19:31 · 413 阅读 · 0 评论 -
【洛谷】3377【模板】左偏树(可并堆)
题目传送门作为一个合格的蒟蒻,我们当然在学每一种算法后都要去做一些和这种算法有关的模板题。毫无疑问,这是一道左偏树的模板题。伏地膜大佬,这位大佬对左偏树的解释十分到位。左偏树就是在堆的基础上加上了距离的概念。距离指的是每一个节点到离他最近的不满节点的距离。若一个节点的左儿子或右儿子为空,则该节点是一个不满节点。左偏树有两个特殊的性质:1.一个节点的左儿子的距原创 2017-05-03 18:55:36 · 1182 阅读 · 0 评论 -
【BZOJ】2152 聪聪可可 点分治
题目传送门这道题的正解——点分治还是挺好想到的,因为题目已经明确给出这道题是以树为基础的。这题的统计答案与点分治的模板有些不同,不过也还是挺好想到的。题目要求任意两点的距离是3的倍数的点对数量,我们可以把这个转化为在有根树中,LCA到其中一点的距离为3的倍数余1,到另一节点的距离为3的倍数余2的点对数量加上LCA到两个节点的距离都为3的倍数的点对数量之和。就此,我们已经解决了这道题原创 2017-05-30 20:11:42 · 489 阅读 · 0 评论 -
【BZOJ】1468 Tree 点分治
题目传送门这题就是一道点分治的模板题,就当是立学习了点分治的Flag了。点分治,就是把分治的思想转移到树上,然后对于任意两个节点的路径过当前子树的情况进行特殊讨论。这道题是求任意两点间的距离不大于k的点对数量。为了保证时间复杂度的稳定性,我们可以求一遍当前子树的重心来做根。然后,我们可以统计所有过当前树根且路径长度不大于k的点对数量p,我们也可以统计所有过当前树根且路径长度不大原创 2017-05-25 20:53:02 · 559 阅读 · 0 评论 -
【洛谷】1821 [USACO07FEB]银牛派对Silver Cow Party 最短路径
题目传送门日常水一波,就是对正向图跑一遍SPFA,然后建一张反向图,也就是求其他所有的节点到源点的距离,然后再跑一遍SPFA。最后输出两次距离和的最大值就行了。附上AC代码:#include #include #include #include #define M 100010#define N 1010using namespace std;struct note原创 2017-05-15 19:31:14 · 399 阅读 · 0 评论 -
【HDU】1512 Monkey King 左偏树
题目传送门题目大意:每次取出两个大根堆的对顶,将这两个节点的键值减半,维护堆的性质,然后将这两个大根堆合并起来,输出堆顶的键值。很明显,这题的大部分时间都用来合并两个大根堆了,所以我们不能用普通的二叉堆,因为普通的二叉堆合并的时间复杂度是O(n)的。考虑到合并的时间复杂度应该降低,我们就想到了左偏树(当然,斜堆、二项堆、斐波那契堆也是可以的),合并操作的时间复杂度是O(logn)的。原创 2017-05-04 19:20:18 · 343 阅读 · 0 评论 -
【BZOJ】1455 罗马游戏 左偏树
题目传送门这题和洛谷上的左偏树模板的解题思路是一模一样的,所以只要贴上左偏树的模板就好了。附上AC代码:#include #include #include #define N 1000010using namespace std;int n,m,dis[N],w[N],x,y,f[N],ls[N],rs[N];void read(int& a){ static ch原创 2017-05-04 18:10:56 · 384 阅读 · 0 评论 -
【BZOJ】1026 [SCOI2009]windy数 数位dp
题目传送门感觉自己真的是越来越菜了,连数位dp都写不来了……定义f[i][j]表示当前取到第i位(从高位到低位),当前位置为j的方案数。然后就是对于是否存在前导0的分类讨论,并同时统计答案。最后利用差分的思想,把[l,r]的windy数的数量转化成[1,r]的windy数的数量减去[1,l-1]的windy数的数量即可。附上AC代码:#include #include原创 2017-05-31 19:22:42 · 232 阅读 · 0 评论 -
【HDU】2196 Computer 树形dp
题目传送门博主暴走中……神他妈的HDU,不能用fread读入的!!!我因为这个错WA了10+发……这题的题意就是求每一个节点在树上和它距离最大的点的距离。其实这题的思路还是挺清晰的,我们可以对于一棵有根树的一个非根非叶子节点进行讨论。这个节点的最大距离有两种情况,一种是从以该节点为根的子树的最大距离扩展过来,另一种就是从父亲节点扩展过来。引用一下另一位大佬的图片(看2号节点):原创 2017-06-15 20:22:05 · 227 阅读 · 0 评论 -
【洛谷】3379 【模板】最近公共祖先(LCA)
题目传送门诶,自己真的是越来越菜了,自己寒假里学会的LCA到现在已经忘得差不多了。今天就当是复习一下吧。其实这个倍增的思想还是挺神奇的,每次询问时先把深度较大的节点倍增到和深度较小的节点同一深度。然后再把这两个节点同时倍增到离它们最远的不相同的祖先出,赋值并循环,最后返回当前任意一个节点的父亲节点就是这两个节点的LCA了。附上AC代码:#include #include原创 2017-06-07 13:00:23 · 887 阅读 · 0 评论 -
【POJ】3107 Godfather 树形dp
题目传送门一大早只能先用水题来唤醒自己的思维,毕竟为了期末考准备了半个月,有点失了智。个人认为,对于英文题目,看懂题目最重要……这题的大意是在一棵无根树中,求最大子树最小的节点序号。其实这题的解题思路非常直白,就是求树的重心,如有多个,需排序。然后,就没有然后了啊……附上AC代码:#include #include #define N 50010using nam原创 2017-06-29 09:14:59 · 292 阅读 · 0 评论 -
【POJ】3140 Contestants Division 树形dp
题目传送门这题给我最深的感受就是:初始化很重要……我因为初始化的原因WA了一中午……这题其实和dp并没有什么特别大的联系,其实是一个枚举。对于截断的一条边的两个节点所在子树大小差取一个最小值就行了。可以把这题中的树想象成一棵有根树,令第一号节点为根,然后枚举当前节点的所有子树,即枚举所有的边,然后计算答案就行了。附上AC代码:#include #include #def原创 2017-06-29 20:18:05 · 287 阅读 · 0 评论 -
【BZOJ】3314 [Usaco2013 Nov]Crowded Cows (多种解法)
题目传送门多刷水题有益身心健康……维护一个堆(单调队列和线段树也可以吧),记录在当前节点前且在距离范围内的以高度为关键字的大根堆。若当前堆顶的位置超出范围,就把这个节点pop掉。若当前堆顶的高度满足条件,就把计数的数组加1。最后统计有多少节点的计数数组的值为2,个数就是答案。附上AC代码:#include #include #include #include u原创 2017-06-08 21:08:57 · 514 阅读 · 0 评论 -
【BZOJ】1787 [Ahoi2008]Meet 紧急集合 LCA
题目传送门这题还是挺好的,至少我困扰了我一段时间。首先把这棵无根树转化成一棵有根树,根是什么,树的重心吧。(如果数据过小,直接定义第1号节点为根就行了)然后倍增所有节点,得到所有节点和祖先的关系。最后,要求3个点的树上最短距离,那么集合点一定是其中两个节点的LCA。(画画图就秒懂了)最暴力的方法就是枚举3个节点的LCA,然后判断距离和最小的为集合点。但是,有一种神奇的方法:原创 2017-06-08 20:11:07 · 321 阅读 · 0 评论 -
【BZOJ】3036 绿豆蛙的归宿 期望DP
题目传送门补一发期望DP,这道题困扰了我很久了,今天终于A掉了,比较开心:)f[i]=∑j∈son[i]f[j]+dis(i,j)deg[i]上面就是整道题的核心,只要从第一个节点开始DFS就行了。附上AC代码:#include #include #define N 100010using namespace std;struct side{ int to,w,原创 2017-06-02 21:09:35 · 270 阅读 · 0 评论 -
【BZOJ】1628 [Usaco2007 Demo]City skyline 单调栈
题目传送门诶,这不就是QZOI2017的t2吗?身为蒟蒻的我也就这题是AC的了,其他的题目……难受ing……就是一个单调栈,统计当前的节点之前有多少节点的纵坐标比当前节点的纵坐标大。附上AC代码:#include #include using namespace std;int n,m,que[1000010],len,x,y,ans;inline char nc(){原创 2017-06-02 19:04:52 · 352 阅读 · 0 评论 -
【POJ】2342 Anniversary party 树形dp
题目传送门曾经身为蒟蒻的我对树形dp一无所知,现在依然身为蒟蒻的我认为树形dp不是不能做。要相信蒟蒻也是有明天的。Flag:树形dp入门题,从此我入了树形dp的坑。设f[i][0~1]为第i个人是否出席的最大快乐指数。(0表示没出席,1则反之)状态转移方程也非常好写:设j为i的下属,1.若第i个人出席,则f[i][1]+=f[j][0]2.若第i个人不出席,则f原创 2017-06-13 19:59:15 · 218 阅读 · 0 评论 -
【HDU】3586 Information Disturbing 二分+树形dp
题目传送门我又一次感受到了初始化的重要性:我又错在了初始化上了……(多组数据死全家!!!)这题的思想还是挺好的,二分答案加上树形dp,分开来看都挺简单的,但合起来就需要一点脑洞了。我们可以二分一个答案出来,作为题目要求的最大边权值,然后用树形dp来判断这个答案是否成立。综上,这题就被完美的解决啦。附上AC代码:#include #include #include #d原创 2017-06-30 14:11:29 · 319 阅读 · 0 评论 -
【BZOJ】 1610 [Usaco2008 Feb]Line连线游戏 计算几何
题目传送门日常水一题,因为n的范围只有200,所以可以暴力枚举两个点,把它们所形成的直线记录下来,去重,直线的条数就是答案。附上AC代码:#include #include #include #include using namespace std;struct note{ int x,y;}a[210];int n,len,ans;vector c;int原创 2017-07-01 14:31:17 · 292 阅读 · 0 评论 -
【BZOJ】1050 [HAOI2006]旅行comf 并查集
题目传送门学过的东西就应该及时巩固,否则和没学没有什么区别——我TMD把自己半年前做过的题目都忘了……刚一拿到这道题,我YY了很久,最短路?BFS?还是树结构?YY不出来,题解搜起来。然后我就搜到了codevs1001,舒适的路线,然后发现这题我TMD是做过的?!看了自己半年前的代码,发现是并查集……懵逼中……好吧,因为m的范围是5000,n^2能勉强接受,于是可以对所有边按权原创 2017-07-01 15:29:46 · 358 阅读 · 0 评论 -
【BZOJ】1045 [HAOI2008] 糖果传递 && 3293 [Cqoi2011]分金币 贪心
这题是有爱的双倍经验时间,一个程序刷两题真好。(偷笑)但是,手贱交错题目就不好了……(今天怎么这么背?)这题其实就是一个结论题,引用一下一位大佬的部分博客:(大佬传送门)原创 2017-07-03 09:36:18 · 312 阅读 · 0 评论 -
【BZOJ】1112 [POI2008]砖块Klo 平衡树
题目传送门今天一晚上就做了一道题,好颓废啊……这题其实还挺水的,只不过本蒟蒻一直都不太想的进去,所以一直WA,一直懵逼。其实这题的题意是在n个数中连续取k个,把这k个数都改成一个相同的数m,使得Σabs(a[i]-m)最小。很显然,当m为当前k个数的中位数时,当前k个数的改动最小。至于为什么,我也不知道……然后我们就可以把这题转化为一个滑动窗口的题目,总共有n-k+1个窗口,求原创 2017-07-04 21:27:39 · 336 阅读 · 4 评论 -
【BZOJ】2431 [HAOI2009]逆序对数列 递推
题目传送门不知道今天是怎么了,可能是空调吹多了吧,一直不在状态,连递推题我都做不来了……(扎Zn了老Fe……)然而,不管环境如何恶劣,我们仍要努力学习,为了自己的明天而奋斗。(说的好像跟真的一样)其实这题就是一个递推,现在我们考虑第i个数,定义f[i][j]表示序列里有i个数,逆序对的组数为j的方案数。因为第i个数的权值就是i,则不管第i个数插到序列里的哪个位置,都会和在它后面的数原创 2017-07-03 15:05:28 · 440 阅读 · 0 评论 -
【洛谷】1351 [Noip2014] 联合权值 枚举
题目传送门日常水一水,挑一道Noip的水题来练练手。这题的题意是求一棵树上所有的由两条边相连的点对的点权积的和,还有点权积的最大值。我们可以单独挑出一个点i,假设有4个点v1,v2,v3,v4和它直接相连,那么第i号节点对点权积和的贡献S可以表示成:S=W(v1)*W(v2)+W(v1)*W(v3)+W(v1)*W(v4)+W(v2)*W(v3)+W(v2)*W(v4)+W(v3)原创 2017-07-11 10:04:29 · 305 阅读 · 0 评论 -
【BZOJ】1131 [POI2008]Sta 递推
题目传送门这题还是挺水的,还是YF哥哥最强了。(听说最近YF哥哥在一次模拟赛中虐场了,不愧是一代神犇)其实我觉得YF哥哥有一点说错了,这题好像并不属于DP的范围,只是一个递推罢了。(YF哥哥不喜勿喷)首先我们可以随便选一个节点作为树根,预处理出所有节点到第i号节点的距离和以当前节点为根的子树的大小。然后我们取节点i和j,假设以第i号节点为根,j是i的一个儿子,现在我们要考虑以j号节原创 2017-07-11 10:22:37 · 325 阅读 · 2 评论 -
【CODE[VS]】1082 线段树练习 3 树状数组
题目传送门标题只是吸引你点进来的,这并不是一篇水博客,下面是有好东西的。曾经我们以为树状数组虽然常数比较小,代码简洁明了,非常好掌握,但可惜的是没有办法实现区间查询而放弃了树状数组去学线段树。我们并不能否认线段树的优秀,但是我们也不能否认树状数组的强大——树状数组是可以实现区间查询的!首先我们都了解树状数组的区间修改吧,其实就是利用了前缀和的性质罢了。(也就是差分)然后我们原创 2017-07-11 11:11:34 · 244 阅读 · 0 评论 -
【BZOJ】3343 教主的魔法 分块
题目传送门分块什么的最好了~(至少简单易懂,代码还比较好写)这题就当是我学习了分块的flag吧。其实分块就是把原来n个元素分成sqrt(n)块,每块有sqrt(n)个元素。对于一段连续的区间修改,我们可以把这个区间分成若干个完整的块和两端剩下的元素。对于完整的块,我们可以用和线段树一样的思想——延迟标记来记录当前块内所有元素的共同修改量;对于两端剩下的元素,我们可以暴力修改原创 2017-07-21 20:27:58 · 267 阅读 · 0 评论 -
【BZOJ】3670 [Noi2014]动物园 KMP
题目传送门这题的正解就写在了题目里——KMP。(NOI的题目有这么好心吗?)对于每个字符串,我们先求出next数组,也就是失配函数,并记录当前状态经过几次pre=next[pre]会使pre==0,也就是num数组的雏形。然后再做一遍类似于求next数组的循环,并while(pre*2>i) pre=next[pre],然后就是统计答案咯。由于今天不知中了什么毒,可能是天气太热,我原创 2017-04-18 20:19:45 · 562 阅读 · 0 评论