【橘色小分队】snow的笔记@

风流意气都作罢 提交于 2020-01-16 01:24:08

Make Good 变棒棒

题意:有个序列,你可以添加最多三个数,使序列的异或和的两倍。

思路:先求出来异或和xor,和sum。然后添加的第一个数是xor,这样和变成了sum+xor,异或和变成了0;添加的第二个数是sum+xor,这样异或和变成了sum+xor,和变成了2*(sum+xor)。


Strange Device 奇怪的设备

题意:你有一个设备,它能告诉你你输入的下标对应的序列中第m大的是哪个、是几。你只能输入k个数。

思路:虽然有n个数,但其实k+1个就够了。大的数的出现次数就是m。
只有k+1个数,假设是按顺序排好的,不问前m(包括m)个的话,答案会是第m+1大的数,否则答案就是m。m+1大刚好出现m次,且一共只会有这两种答案。所以~嗯!


Devide Points 分点点

题意:有许多点,把它们分成两堆。同一堆的点之间的距离不能等于不同堆之间的点的距离。

思路:把点按坐标奇偶分成 A偶偶、B奇偶or偶奇、C奇奇。
(以下的距离就认为是距离的平方吧~)

那么AC和B是满足条件的:因为AC内的点的距离一定是2的倍数,B内的距离也一定是2的倍数,AC和B之间的点的距离一定为奇数。

但是B有可能是空的,那么就A和C:A内部一定为4的倍数,C内部一定为4的倍数,AC之间为2但不为4的倍数。

但C也有可能是空的,那么就把所有点的坐标除以2(所有点都在A中,所以不会有舍入),直到奇偶或奇奇。

但A也也也也有可能是空的,那么就以一个点为原点坐标变换,这样就保证有一个永远在A中的(0,0)!


Subset with Zero Sum 零和子集

题意:给出a1、a2、a3……,求其中一些a,使得他们和为0.

思路:假设有点1~n,对于ai,连单向边 i 到 ai - i ,这样如果选出来的a的和为0,那么在图里他们一定是一个环。
(这个我不能跟你解释,因为我也觉得太神奇了)
顺便码住大佬的求环:

int p = 1,top = 0;
while(!vis[p]) {
	sta.push(p);
	vis[p] = 1;
	p = to[p];
}
while(1){
	if(sta.empty()) break;
	if(sta.top() == p) break;
	ans.push_back(sta.top());
	sta.pop();
}

New Year and Ascent Sequence 新年递增串

题意:给出n个数字串,每两个可重复的字符串连接,其中包含递增数字的有几个。递增只需有两个数字,小的在前大的在后即可~

思路:设置一个桶,记录某个最大值出现的次数。对于每个数字串,要么它自带递增:这样的话它和所有的n个串,怎么拼都可以,所以可以ans直接+2*n,并且忽略掉这个串,即n --;
否则就记录这个串的最小值,以及把这个串中最大值的次数+1。然后再处理一遍,对于没有被忽略的串,用桶找到 最大值比它最小值大的串 的个数,这些串都可以在他后边~


New Year and Permutation 新年排列

题意:给出n,对于n的所有排列,求其中满足条件的子串的个数。条件:串中最大值-最小值等于长度-1.

思路:首先可以看出,满足条件的子串必为连续的子串。可以想到对于n个数,将其分为两部分,一部分是长度为i的连续的,另一部分是长度为n-i+1的两部分(听起来好鬼畜)。长度为i的子串可以提供 i!种方案,剩余的 n-i+1 位对于n的所有排列来说也可以随意组合。
枚举长度i,对于每一个i,有n-i+1种取法(就当是在123456789中取连续的i个)。于是结果就是Σi!×(ni+1)!×(ni+1)\Sigma i!\times (n-i+1)!\times (n-i+1)


New Year and Conference 新年开会

题意:有好多会,在A处开有个起止时间,在B处开有个起止时间,问这些会中有没有一些,在A中冲突在B中却不冲突,或在B中冲突在A中不冲突?

思路:先按照在A处的开会起始时间排序,然后开始的放进优先队列Q(按照 在a中结束时间排序),结束的拿出来。
每次发现结束的时候,都看看Q中有哪些,这些必然都要相交才满足条件,而都相交的前提是最晚的开始时间早于最早的结束时间。
由于Q中下标是连续的,所以转化为区间最值查询问题。嗯~


New Year and Castle Construction 新年建城堡

题意:有很多很多点,找到所有严格包含点的四边形 的个数。

思路:枚举中心点,对于每个中心点,以极角坐标排序,然后枚举固定的一个点,看看角度pi以内有多少点,这些点相互组合都是不行的。
最后的方案数就是 总方案数-不行的方案数。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!