day9

GDCPC 2024 图

考虑 \(k=\lfloor\frac{m}{n-1}\rfloor\) 有点像生成树。

\(k\) 个生成树,每次考虑一条边找第一个没联通的生成树,这个可以二分。

然后就完了。

AGC016E Poor Turkeys

对于一只火鸡 \(i\),考虑什么样的情况它可能活。

正着做会出现神秘二选一,于是倒着看。

如果某个人要吃 \((x,i)\),那么 \(x\) 需要留给这个人,前面不能用。

如果某个人要吃 \((x,y)\),且 \(x,y\) 都要留给后面,那火鸡 \(i\) 炸了。

如果 \(x,y\) 有一个要留,那另一个得留到现在。

如果 \(x,y\) 都没啥限制,那随便吃,无所谓。

因此我们得到了集合 \(\mathrm{S}_i\) 为让 \(i\) 存活需要留到后面的火鸡编号,我们把 \(i\) 也算入其中。

对于每两只火鸡 \(i,j\) 都跑一次上述判定是很没救的。

然而讨论一下发现如果 \(\mathrm{S}_i\cap\mathrm{S}_j\neq\varnothing\),那么肯定有只火鸡会坠机。

于是直接 std::bitset 维护一下就好。

CEOI 2023 Balance

考虑 \(S=2\),对于数量之差不超过 \(1\) 并不好处理。

有个很神秘的方法是变成数量相同,也就是对着最终方案添加一个评测机,测 \(x\)\(0\),其中 \(x\) 是总提交次数为奇数的题目,\(0\) 是我们加的。

显然这个和原方案是能双射的,而对于这个我们考虑建图,\(a_i\to b_i\) 则表示先测 \(a_i\) 再测 \(b_i\),那这可以用欧拉回路构造。

对于 \(S>2\) 的,可以分治做 \(2^{k-1}\),然后把前 \(2^{k-1}\) 看作一个时刻,后 \(2^{k-1}\) 看作另一个,做 \(S=2\) 的进行合并。

CF1956E Nene vs. Monsters

可以证明,当进行 \(\mathcal{O}(\sqrt[3]{V})\) 轮后,不会存在长度 \(>3\) 的连续非零段,然后就可以进行简单计算做出来。

PA 2024 Desant 3

对 2 取模是入手点,在此条件下,若有两个部分方案一一对应,那就不用处理这部分。

譬如有 \(x_{a_i}=1,x_{b_i}=0\),那么做交换后和一开始就是 \(x_{a_i}=0,x_{b_i}=1\) 是能对应的,这两者对答案贡献相同,不用考虑。

那这样的话直接搜就是 \(\mathcal{O}(2^{n/2})\) 的,再来个 \(\mathcal{O}(n+m)\) 的判断即可。

JOISC2022 京都观光

考虑转弯处,可以写出一个非常神秘的限制,变式后是斜率型的。

用单调栈建立凸包,然后可以类似归并地维护?细节不太懂。

AGC057D Sum Avoidance

首先对于 \(a\le S\),如果 \(S-a\) 和它一起被选,那就炸了。

于是 \(N\) 上界是 \(\lfloor (S-1)/2\rfloor\),而这个上界是可以取到的,对于每一对我们都取较大者,最后任意两个数的和都 \(>S\)

考虑字典序的限制,尝试从小到大加入,可以证明要么能加 \(t\),要么能加 \(S-t\)

考虑维护 \(\le\lfloor (S-1)/2\rfloor\) 的集合 \(\mathrm{B}\),可以证明若 \(a,b\in\mathrm{B}\),有 \(a+b\in\mathrm{B}\)

证明方式都是反证。

考虑第一个加入 \(\mathrm{B}\) 中的元素 \(d\),他一定是第一个与 \(S\) 互质的数,因此可以证明其 \(<50\)

加入数的方式分两种,可以被 \(\mathrm{B}\) 中元素表示或者不被表示也不会组成 \(S\),对于后者我们发现是 \(\mathcal{O}(d)\) 的。

为何?这样的元素加入时与 \(\mathrm{B}\) 中任意元素是 \(\bmod\text{ }d\) 不同余的,否则会被表出,因此至多 \(d\) 个。

考虑设 \(f_x=x_0\) 表示当前 \(x_0\equiv x\pmod d\) 的最小 \(x_0\),这个东西是能维护的,类似同余最短路。

最后查询的时候二分一下即可。

OOI 2025 The arithmetic exercise

考虑 \(a_i\) 的实质相当于给每个 \(x_j\) 赋个正负号,然后最大化求和

翻转一下 \(x\) 序列,设 \(f(i,j)\) 为处理前 \(i\) 个,有 \(j\)\(a_k\) 的下一位是负号,当前分配的最大和。

有转移 \(f(i,j)=\max(f(i-1,j-1)+x_i,f(i-1,j+1)-x_i)=\max(f(i-1,j-1)+2x_i,f(i-1,j+1))-x_i\)

把这个 \(-x_i\) 放在答案上,转移时只需要考虑前面的 \(\max\)

因为 \(i,j\) 奇偶性不同时显然 dp 值是 \(-\infty\),所以记 \(f'(i,j)=f(i,2j+[i\equiv 1\pmod2])\)

奇数为例,转移 \(f'(i,j)=\max(f'(i-1,j)+2x_i,f'(i-1,j+1))\),偶数类似,都可以 slope-trick。

COTS 2019 Izazov

算个典题,论文题。

思路是考虑角,注意到一个 270 的内角比较牛的是跟另一个一起切,不牛的是随便切。

而对于两个角一起切的一个方案,发现行上的会和列上的冲突。

那么可以用二分图匹配来最大化这个切法,然后就是切完开始染色。

染色那块相当难写。

湖北省选模拟 2025 团队划分

Triangular Lamps Hard

JOISC 2022 蚂蚁与方糖

posted @ 2025-08-18 21:04  LQ636721  阅读(3)  评论(0)    收藏  举报