国庆备课
P16952
思路
Ad-hoc 吗,我们先大胆观察样例。
然后发现 \(n\le7\) 无解。
然后发现对于 \(n\ge8\) 我们可以选择在 \(n=8\) 的基础上修改。
然后我们发现对于 \(\sum_{i=2}^{n-1}\left [mex\left \{ A_{i-1},A_i,A_{i+1} \right \} \right ]=0\) 我们让其贡献加 \(1\),只用在 \(1\) 堆里塞一个 \(1\) 即可。
对于 \(\sum_{i=2}^{n-1}\left [mex\left \{ A_{i-1},A_i,A_{i+1} \right \} \right ]=1\) 同理。
然后对于 \(\sum_{i=2}^{n-1}\left [mex\left \{ A_{i-1},A_i,A_{i+1} \right \} \right ]=2\)
很显然能想到一种方法 \(010101...\)这样构造下去。
但是我们发现,你需要最小化这个序列 \(1\) 的个数,然后我们发现 \(100100...\)这样也可以,而且也是加 \(1\) 个元素,贡献加 \(1\)。
于是我们发现在 \(n=8\) 的基础上每加 \(3\) 就是一个合法状态,所以对于 \(n\% 3=2\) 且 \(n!=5\) 都成立。
按思路模拟即可,时间复杂度 \(O(Tn)\)。
P12051
思路
依旧 Ad-hoc,依旧观察样例。
我们发现样例有些废,但也有启发。
比如从样例二,我们发扬人类智慧,我们或许可以先找到一个质数 \(p\),然后按照 \(p,p-1,p+1,p-2,p+2,...\)这样构造下去。
然后我们发现让 \(p\) 离 \(n/2\) 越近越好。
于是我们欧拉筛质数,二分查找,在模拟即可。
时间复杂度 \(O(t(n+logn)+n)\)。
P11277
思路
对于题面有一个非常显然的结论,我们每放一个 \(1\),贡献就会加 \(n-1\)。
根据上面的结论我们可将情况统一转到 \(k\le n\)。
然后我们发现连放三个相同的数贡献加二,两个贡献加一。
然后我们从 \(n\) 开始放,每放一个数,数的大小加一,直到放完即可。
这样既可不满足 \(\exists i,j\left ( 1\le i\le j\le n \right ) ,min(a_i,a_j)|max(a_i,a_j)\)。
于是乎模拟即可,时间复杂度最坏 \(O(n)\)。
实际上最开始读成了 \(gcd\),于是此题有点不可做。
P13686
思路
我们先抛开题目不谈,来探究一下异或的性质。
让我们来求一下这个函数:\(f\left ( n \right ) =1\oplus 2\oplus 3\oplus ...\oplus n\)
请求 \(f(n)\)。
我们可得
\(
f(n)=
\begin{cases}
n, & n \equiv 0 \pmod 4 \\
1, & n \equiv 1 \pmod 4 \\
n+1, & n \equiv 2 \pmod 4 \\
0, & n \equiv 3 \pmod 4
\end{cases}
\)
然后我们分析,对于 \(n\le4\) 直接特判掉,因为这不太符合我们接下来推的。
首先对于 \(n=2^k\),那么输出 \(n\) 即可,显然。
反之我们应找到 \(2^k\le n\) 的最大的 \(k\),然后输出 \(2*2^k-1\) 即可,显然。
时间复杂度 \(O(Tlogn)\)
P16496
我们发扬人类智慧,观察数据可得:
- n=1,num=m*2
- m=1,num=n*2
- m,n为奇数,num=n*m+n+m-1
- m*n+m+n
构造显然:你都能观察出上面了,还不会构造?
P3273
非常简单的可并堆,由题可得。
经过合理分析可得 \(O((n+q)log(n+q))\)
P15321
思路
根据题面,当构造的 \(mex=k\) 我们首先能想到将数分为三类:
一种是小于当前的 \(k\) ,一种是等于当前的 \(k\),一种是大于当前的 \(k\)。
接下来令其分别为 \(a,b,c\)。
易得,我们应这么处理:
- 如果 \(b>2\),那么 \(b-2\)
- 如果 \(b>0且c>=2\),那么 \(b-1,c-1\)
- 如果 \(b>1且c>=1\),那么 \(b-1,c-1\)
- 如果 \(b>0且a>=2\),那么 \(b-1,x-1\)
如果处理完后 \(x>=k 且 y=0\),那么可以,我们在此基础上在22配对即可。
反之不行。
最后,我们在注意,中间如果有断档,那么肯定不行,记录一下即可。
时间复杂度 \(O(\sum n)\)。

浙公网安备 33010602011771号