构造
neither_nor
这个作者很懒,什么都没留下…
展开
-
BZOJ3624 [Apio2008]免费道路
先用实边跑生成树,然后剩下的连接各个连通块的虚边是一定要选的,充值并查集,把必选的虚边都选上,因为那些连通块用实边就能联通,所以再随便加虚边也无所谓,加虚边到k条,剩下的再用实边做无解就是必选的虚边大于k条或者无法补齐至k条#include#include#include#include#include#include#include#include#include#in原创 2016-06-12 09:16:49 · 777 阅读 · 0 评论 -
BZOJ2632 [neerc2011]Gcd guessing game
题目描述有些问题,只要你心里知道那个数就行了如果我们猜一个数,他告诉我们gcd不是1,那么相当于把n和你猜的数都除以gcd,他告诉你gcd是1。所以每次都告诉你是1是最坏的情况,这样当n以内的所有素数都作为询问的数的因数出现过,并且他告诉你gcd是1,从而n以内所有素数都被否认是答案的因数之后,我们就能确定答案是1问题变成了我们要给n以内的素数分组,使得每组的乘积小于等于n,问最小组数原创 2016-07-01 14:40:21 · 962 阅读 · 2 评论 -
BZOJ3060 [Poi2012]Tour de Byteotia
首先我们发现删掉一个两个端点中不包含关键点的边肯定不会比删一个包含关键点的边要优,因为包含关键点的边所在的包含关键点的简单环的数量肯定不比不包含关键点的边要少,进一步我们就可以发现我们一定可以构造出一种最优方案使得删掉的每一条边都包含关键点,因为任何时候删掉包含关键点的边不会更劣,而删掉所有包含关键点的边之后一定满足题意我们对所有不包含关键点的边做一个生成树,然后尝试把所有包含关键点的边加进来原创 2016-08-17 12:29:42 · 792 阅读 · 0 评论 -
BZOJ2530 [Poi2011]Party
每次把两个之间没有边的点删掉,2/3的团不会把这两个点都包含,所以删最多1/3n次后,就只剩下了2/3团的子集,团的子集还是团,随便输出就好了#include#include#include#include#include#include#include#include#include#include#include#include#include#includeu原创 2016-08-18 14:56:02 · 637 阅读 · 0 评论 -
BZOJ2214 [Poi2011]Shift
假设现在序列中1~i-1已经有序地排在了一起,现在我们要考虑如何把i排到后边我们先把i挪到第一位,然后我们只要保证i一直在第一位,然后把1~i-1窜到最后就可以了我们可以每次进行两次a操作1次b操作就可以干掉后边的两个,而如果i-1后边只剩下了一个我们就可以进行1次a操作和两次b操作但是这样的话当进行到i=n-1而n-1和n他们俩是逆序的时候会出问题,因为你把n-1挪到第一位的时候1也原创 2016-08-31 10:02:09 · 762 阅读 · 0 评论 -
BZOJ4319 cerc2008 Suffix reconstruction
首先考虑怎么样会不合法,我们发现只要字符集足够大,什么样的后缀数组都是能求出来的,只要令每个字符都不相同就可以了,所以不合法的条件是想求出这个后缀数组字符集大小要超过26所以我们要令每个字符都尽可能的小设s为字符串数组,suffix[i]表示从i开始的后缀,则s[sa[1]]肯定等于a,因为如果s[sa[1]]不等于a而别的地方有等于a的,那么sa[1]肯定就等于得a的那个地方了然后考原创 2016-09-05 09:19:04 · 579 阅读 · 0 评论 -
BZOJ3613 [Heoi2014]南园满地堆轻絮
发现答案是最大的(a[i]-a[j]+1)/2满足i想想的话好像还挺显然的#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define MAXN原创 2016-09-28 17:19:12 · 525 阅读 · 0 评论