IOI2022 Day2 题解
有人对着假做法调了 3h ,是谁我不说。
但是最后还是把 T3 过了,所以还是没有被 hhz 偏序!
upd:好像光看上面这句话看不出来啊。真实情况是,因为某些鼠标点击的原因,我开题的顺序是 132 ,于是过了 t3 之后已经没时间看 t2 了。
LOJ#3833. 「IOI2022」数字电路
把下面的点都固定了,那么根的方案数恰好是儿子的 \(1\) 的个数。
因此总的方案数可以拆成每个儿子是黑点的方案数之和,只是每个儿子为黑点的方案数还要乘上其他子树任选的方案数。
一直这样拆下去,最后每个叶子就会有一个权值,答案就是所有黑色叶子的权值之和。
线段树维护即可。
LOJ#3834. 「IOI2022」最罕见的昆虫
从左往右依次加入每个昆虫,如果众数变成 \(2\) 就删掉,这样就可以求出不同昆虫的种类数 \(k\) 。
然后设 \(l=1,r=n/k\) 开始二分答案。每次二分到 \(m\) 时就还是从左往右加入每个昆虫,如果众数变成 \(m+1\) 就删掉。如果最后留下了小于 \(km\) 个昆虫就对留下的昆虫接着二分,否则对外面的昆虫二分。
后半段是用 \(n\) 次操作把 \(n\) 除二,所以差不多是 \(2n\) 。总共差不多 \(3n\) 。
不过因为二分的一些上下取整的问题,怎么做到严格不超过 \(3n\) 还不太清楚。
莫得提交记录。
LOJ#3835. 「IOI2022」千岛
先把 \(0\) 不能到达的点删掉,然后拓扑排序把出度为 \(0\) 的点删掉。
此时不难证明所有点都可以到达至少一个环。
考虑 \(0\) 的出度。如果 \(0\) 只有一条出边 \(0\to x\) ,那么不难发现回到 \(0\) 之后就出不去了,所以如果存在答案就只能是 \(0\to x\to \cdots\to x\to 0\) 。所以直接把 \(0\) 删掉递归 \(x\) 即可。
否则,考虑 \(0\) 的出边 \(0\to v_1,0\to v_2,\cdots,0\to v_k\) 。
如果存在一个点 \(x\) 能同时被 \(v_i\) 和 \(v_j\) 到达,那么就可以造这样一个解:从 \(0\) 到 \(v_i\) 到 \(x\) ,从 \(x\) 走一个环,再走回 \(v_i\) 回到 \(0\) ,然后从 \(v_j\) 那边也这样做一次。注意一些小细节。
否则,说明 \(v_1\) 和 \(v_2\) 可以分别走到两个不同的环。不难把此时的答案也构造出来。