CF 杂题选做 4月
1966F
Tag:构造 2900
我们考虑如果我们知道所有子段和会怎么做,首先会有 \(\frac{n+1}{2}\) 个值会出现奇数次。
我们对于这些值排序,那么只要对于相邻两个值差分就可以得到每个位置是什么。
再考虑另一种做法:
我们知道当前最大值为 \([1,n]\),那么次大值就是 \([1,n-1]\)。
我们可以由此得到 \(a_1,a_n\) 的值,那么我们把我们已知的所有子段的值在 \(set\) 中删掉,那么留下来的就是最大的一个前缀和,然后用上一个最大的前缀减去当前的值就可以得到第 \(i\) 位的值。
2084E
Tag:计数 2400
考虑一个 \(O(n^3)\) 的做法,首先枚举 \(mex\) 至少是 \(k\),然后枚举 \(l,r\) ,判断 \([l,r]\) 这个区间是否满足条件,设 \(0\) 到 \(k-1\) 还有 \(c1\) 个数不在 \([l,r]\) 内,\([l,r]\) 中有 \(c2\) 个位置为 \(-1\),那么答案就是 \(C(c2,c1)\times c1!\times (t-c1)!\),\(t\) 是总 \(-1\) 个数。
我们发现一个区间的标识值只有两个:\(-1\) 的数量,不在 \([l,r]\) 内的最小值,我们设这个值为 \(y\),那么对于 \(k\leq y-1\) ,\([l,r]\) 都是满足条件的。
所以我们只需要求出 \(d_{x,y}\) 表示 \(k=x,c1=y\) 的答案,我们可以枚举每个区间,然后在 \(d_{x,y}\) 上差分即可,最后枚举 \(d_{x,y}\) 乘上对应的组合数和阶乘即可。

浙公网安备 33010602011771号