摘要:
嘟嘟嘟 最小割。 不过割掉边代表付出某一种代价,而题中让求的是利润。所以我们先把完成所有任务的总利润加起来,然后算没有完成任务付出的代价。 建图比较明白: 1.源点向任务连一条边,容量为完成这个任务赚到的钱。割掉代表这个任务没完成。 2.每一个机器向汇点连一条边,容量为买这个机器所花的钱。割掉代表没 阅读全文
摘要:
嘟嘟嘟 看数据范围,加上题中频繁提到的冲突,就可以想到算法是最小割。 1.同意睡觉的,源点就像他连一条容量为1的边。割掉它就代表他背叛了自己的意愿。 2.同理,不同意睡觉的,就像汇点连一条边。 3.考虑每一对朋友。如果两个朋友意见相反,就互相连一条容量为1的边,割掉其中的任意一条就代表朋友之间发生了 阅读全文
摘要:
嘟嘟嘟 今天才知道,原来lcs也有O(nlogn)的做法…… 首先对于两个排列(即使不是排列,离散化一下就行),我们能很容易的得出a[i]在b中出现的位置,但是无法保证出现的相对位置和a[i]相同,所以我们要解决的是求出a[i]在b中出现的相对位置相同的最长序列长度是多少。(相对位置就是对于两个的数 阅读全文
摘要:
嘟嘟嘟 这是一道比较经典的最小割模型,对只会最大流却对最小割一窍不通的我来说在适合不过了。 首先,题目中的图片非常良心,细心观察他能得到一个很重要的规律:黄色格子上的骑士只能攻击红色格子上的骑士,反之同理。 因此,我们可以把棋盘进行黑白染色,然后白点放在图的左侧,黑点在图的右侧,有点像二分图的感觉。 阅读全文