2025.2.24 test

这把还可以。首先是觉得 C 很像以前学的那种列竖式的做法,然后狂想这个题,大概到 1:30 的时候写了个 40pts。然后回去看 A 就秒了。最后 B 即使想到调整的关键性质,但是考虑最优化 x+y 的时候忘记二分了。然后 C 题的问题就是思路不够宽广,打表找规律没怎么打,然后一个背包的思路死磕了,其实背包是 NP-Hard 这个很难优化的。

A

\(n\) 个人 \((a_i,b_i)\),你要选 \(k\) 个人使得 \(a_i\) 互不相同且最大化 \(\min_{i\neq j} |b_i-b_j|\)\(n\le 10^4,k\le 5\)

非常典的一个题,给每个人随机赋一个 \(1\sim k\) 的颜色。随到的概率是 \(\frac{k!}{k^k}\)
然后二分+枚举所有 \(1\sim k\) 的排列然后从 \(b\) 从小到大贪心选。然后做完了。

B

有一个序列 \(a\),你每次可以选一个位置 \(p\),并令 \(a_i\gets a_i-|i-p|\)。最优化操作次数使得 \(a\) 全部 \(\le 0\)
\(n\le 10^5,a_i\le 10^{18}\)

最优化问题考虑调整。发现如果有两个不在首位或者末尾的操作,将他们一个移到首位一个移到末尾更优。
那么,不在首位或者末尾的操作次数最多为 \(1\) 次。考虑枚举是哪位操作,也许用 ds 维护,这是大致框架。
考虑表示限制,设首位用了 \(x\) 次,末尾用了 \(y\) 次,那么限制就是 \((i-1)x+(n-i)y\ge a_i\)。最小化 \(x+y\)
这个可以在平面上用半平面交表示,然而不会。不妨二分答案,将二维降至一维。设 \(x+y=k\)
现在不等式的变量只有一个了可以直接解出来。然后只需要判断不等式是否有解就行了。
现在是 \(O(n^2\log n)\)。考虑第一个枚举怎么优化。我们把枚举放在二分里面。
因为不等式化简后是 \(x\ge \frac{a_i-|p-i|-(n-i)k}{2i-n-1}\),而 \(x\) 是整数,随着 \(p\) 的移动 \(x\) 的移动是调和级数级别的。
三只 \(\log\)。考虑 ds 维护 \(p\),考虑枚举上面不等式的各种取值,然后相当于区间 chkmin 完后,单点查询。
你考虑 ST 表反过来即可。就是修改相当于只改两个 \(f_{i,j}\),然后最后询问再从上往下放下去即可。
\(\log\),发现常数大的跟史一样。
不如先算不用 \(p\) 的答案,显然最后的答案至多比这个答案少 \(1\)。最后再检验一下即可。复杂度单 \(\log\)

C

求所有长度为 \(n\) 的序列中满足和为 \(x\),或起来为 \(y\) 所有序列所有元素的异或和。\(n\le 2^{40},x\le 2^{60},y\le 2^{20}\)

首先划分等价类然后研究方案。我们考虑拆位然后一个方案就是第 \(i\) 位中 \(1\) 的个数,设为 \(\{c_i\}\)
考虑一个方案如何有贡献。首先符合 \(y\) 的限制,要么有 \(1\) 要么无 \(1\) 的区别,这个很简单处理。
一个等价类的方案数是 \(\prod C_{n}^{c_i}\),而因为是异或所以我们要 \(\bmod 2\),根据 Lucas 定理就是 \(c_i\)\(n\) 的子集。
那么考虑从低位往高位填,状态是当前进位数,转移枚举 \(c_i\),维护当前异或和,以及方案数 \(\bmod 2\) 的值。
可以通过比较小的数据。复杂度大抵是 \(O(nx\log x)\)
考虑打表找规律,发现若 \(n\) 为偶数那么答案为 \(0\),这是因为拆贡献每个 \(a_i=v\) 的方案数都相同可以抵消。
考虑 \(n\) 为奇数,那么相当于只用考虑 \(a_1\) 的贡献。不妨拆位,算剩下数满足条件方案的异或和。
我们上面说了背包是 NP-Hard 所以难以优化,这时候可以想到组合数工具。比如算 \(\sum a_i=x\) 的方案数。
也就是说现在从 \(x\) 的限制入手,\(y\) 的限制可以考虑容斥。设 \(f(y')\) 表示只有 \(y'\) 子集的位可以填 \(1\) 的方案数。
那么 \(f(y)=\sum_{y'\subseteq} (-1)^{|y|-|y'|}f(y')\),换成异或就是 \(f(y)=\oplus_{y'\subseteq y} f(y')\)
那么相当于求 \(\otimes_{\sum a_i=x} [a_1\subseteq(y'-2^i)]\times [a_2\subseteq y']\times \dots\times [a_n\subseteq y']\)
考虑逆用 Lucas 定理,也就是 \(\otimes_{\sum a_i=x-2^i} C_{y'-2^i}^{a_1}\times C_{y'}^{a_2}\times \dots\times C_{y'}^{a_n} \pmod 2\)
这个是范德蒙德卷积,也就是 \(C_{y'n-2^i}^{x-2^i}\bmod 2\)。套 Lucas 回去即可。枚举 \(y',i\),复杂度 \(O(y\log y)\)

posted @ 2025-02-24 19:18  s1monG  阅读(37)  评论(0)    收藏  举报