Wtwy fan club 出征 icpc 大获全胜

第一次打 ICPC 貌似打得还不错,最后是 11 题 12 罚时,贡献了 7 题但是 10 罚时(((

C

其实就是选四个出现次数大于等于 \(2\) 的数,让他们两两差的和最大,记录一下出现次数扫一遍找最大,次大,最小,次小即可。

D

赛时脑瘫了多加了个分治的老哥,意识到时已经吃 7 发了。

考虑以每个 \(i\) 做结尾的权值不同子段只有 \(O(n\log V)\) 量级的,考虑对于这些不同子段 DP。

发现每个不同子段对于别的不同子段的贡献是一个二位数点还是按顺序转移的,所以扫一遍拿个 fenwick tree 差分一下就行。

复杂度是 \(O(n\log^2 V)\) 的,最慢点跑了 2900ms+ 差点似了。

F

赛时 PC 很快转化完了题意,但是不会拆式子糖了 1h,后来丢给我让我秒了(((

先不看总方案数,化一下式子:

\[\begin{aligned} \max\{\min_{i=1}^k a_i,\min_{i=1}^k b_i\}&=\min_{i=1}^k a_i+\min_{i=1}^k b_i-\min\{\min_{i=1}^k a_i,\min_{i=1}^k b_i\}\\ &=\min_{i=1}^k a_i+\min_{i=1}^k b_i-\min_{i=1}^k\min \{a_i,b_i\}\\ \end{aligned} \]

那我们令 \(c_i=\min\{a_i,b_i\}\),最后把 \(a,b,c\) 从小到大排个序,那么权值就是 \(a_i+b_i-c_i\)

然后就能 \(O(n^2)\) 做了,\(i\)\(k\) 的贡献为 \(val_i\times \binom{n-i}{k-1}\),考虑拆一下贡献的式子:

\[val_i\times \binom{n-i}{k-1}=val_i\times \frac{(n-i)!}{(n-i-k+1)!(k-1)!} \]

直接令 \(f_i=val_i\times (n-i)!,g_j=\frac{1}{(n-j+1)!}\),那么 \(ans_k=(f*g)_{n-k+1}\times \frac{1}{(k-1)!}\)

H

赛后补一下。

首先这个题意非常不可做,但是仔细观察会得到一些有用的性质。

首先我们发现他对于所有的 \(m\) 个回合都给出了钦定的执政党 \(p_i\),假如说第 \(i\) 个回合执政党一共有多少 \(val_{i}\) 票,那么对于第 \(i+1\) 回合的执政党 \(p_{i+1}\) 我们有:

  1. \(p_{i+1}<p_i\),在第 \(i\) 回合我们有 \(val_{i+1}-1<val_i\),在第 \(i+1\) 回合我们有 \(val_{i+1}\ge val_i\),解得 \(val_{i+1}=val_i\)
  2. \(p_{i+1}=p_i\),由于不能选自己,所以票数不变。
  3. \(p_{i+1}>p_i\),在第 \(i\) 回合我们有 \(val_{i+1}-1\le val_i\),在第 \(i+1\) 回合我们有 \(val_{i+1}>val_i\),解得 \(val_{i+1}=val_i+1\)

又因为一开始你只能选 \(p_1\),所以我们可以知道任意回合执政党的票数,对于编号小的党派我们只用保证小于 \(val_i\),编号大的党派我们只需要保证小于等于 \(val_i\) 即可。

那我们考虑建立这样的一个流模型:

  • 首先我们建立超级源点 \(s\) 和超级汇点 \(t\),用以控制流量和处理强制流满问题,以及源点 \(S\) 和汇点 \(T\)
  • 对于每个回合我们把它们单独建一个点记做 \(u\),然后连一条 \(S\to u\) 的流量为 \(1\) 费用为 \(0\) 的边代表分配一个选票。
  • 对于每个回合 \(u\) 的每个党派 \(v\) 我们单独建一个点记做 \((u,v)\),以下默认 \((m+1,v)\) 等价于 \(T\)
    • 对于每个当前回合的非执政党我们连一条 \((u,v)\to (u+1,v)\) 的流量为当前的最大上界费用为 \(0\) 的边。
    • 对于执政党,我们考虑考虑连一条 \((u,v)\to (u+1,v)\) 的流量为 \(val_u\) 且必须流满的边,考虑上下界,直接从 \(s\) 连一条流量为 \(val_u\) 的边到 \((u+1,v)\),从 \((u,v)\) 连一条流量为 \(val_v\) 的边到 \(t\)
  • 对于两边点集之间我们连 \(u\to (u,v)\) 的一条流量为 \(1\) 费用为 \(a_{v,u}\) 的边。

然后跑最大费用最大流即可,对于输出方案我们直接对于每个 \(u\) 去看哪条出边的流量用光了即可。

J

我说开场的时候也没榜,随便开了一道正好开到签到上(((

模拟一遍即可。

K

拜谢 KinNa。

考虑 \(n\)\(a,b\) 均互质的情况下,我们肯定是贪心地走 \((1,1)\to(1,n)\to(n,n)\),因为这样除了 \(1,n\) 的每行和每列的贡献只被算了一次。

考虑扩展到不互质的情况,我们希望找到一个足够大的 \(x\),使得满足与 \(a,b\) 均互质,手玩一下发现这个 \(x\) 非常接近 \(n\),所以对于 \((1,1)\to(x,x)\) 使用上面的贪心,\((x,x)\to (n,n)\) 暴力算就行。

L

数学题,考虑 \(18+2\times 21\)\(2\times 25\) 两种组合,那么我们可以先满足 \(21\)\(25\) 的要求,然后对于剩下的 \(\frac{n}{2}\)\(18\) 的再每行尽可能的多放就行。

这是对于偶数的情况,奇数时,先把多的 \(3\) 块拿出来,最后再尽可能的塞回去就行。

N

唐诗签到,输出一下首尾数字大小关系即可。

posted @ 2024-11-19 14:14  Nt_Yester  阅读(41)  评论(7编辑  收藏  举报