http://183.6.8.202:8888/d/contest/contest/6a6977436db0e02618cc0002
|
T1 |
T2 |
T3 |
T4 |
| 实际得分 |
100 |
88 |
24 |
8 |
| 期望得分 |
100 |
100 |
24 |
8 |
| 能力得分 |
100 |
100 |
24 |
60 |
(题目顺序按字典序排序)
这场想出了 T1 与 T2(但都不是正解),T3 与 T4 写了暴力,因为时间不够没有思考 T4 的 60 分.
T1 是贪心,T2 是图论建模,T3 是组合数学,T4 是 DP.
(说实话,第一遍读完题认为 4 道题都是 DP).
为了方便讨论,不妨令 \(R\le E\),但事实上在实现时不需要这一步.
考虑我们一共有 \(E+(n-1)R\) 点能量可以利用,显然我们可以将这些能量全部利用完,现在考虑如何做到最优:
应当对 \(v_i\) 这一维排序,应当先让重要程度大的先决策.
在每次进行决策时,我们都应当寻找此位置的前一个决策点和后一个决策点,我们需要知道:
- 前一次决策后剩下的能量.
- 后一次决策前需要的能量.
- 计算此次决策能够消耗的最大能量.
- 将此次决策添加到决策集合中.
不难发现上面的过程可以用 set 维护,时间复杂度为 \(O(n\log n)\).
事实上可以放到笛卡尔树上维护,时间复杂度为 \(O(n)\).
先来讲二分图的做法.
考虑将数对 \((A_{2i-1},A_{2i})\) 看为一个整体,那么会有如下三种贡献:
- 贡献为 0,只有在 \((A_{2i-1},A_{2i})\) 相同时才会有.
- 贡献为 1,替换 \((A_{2i-1},A_{2i})\) 其中一个.
- 贡献为 2,替换 \((A_{2i-1},A_{2i})\) 中两个.
一共只有 \(n\) 个贡献,显然我们可以将贡献为 \(0\) 的组预处理出来,之后我们希望贡献为 \(1\) 的组更多.
考虑二分图:左部点为数对,右部点为数,将数对向 \(A_{2i-1}\) 与 \(A_{2i}\) 连边,问题转化为二分图最大匹配.
构造答案时查询那些边是匹配边,剩下的贡献为 \(2\) 的数对可以随意填写.
虽然匈牙利算法是 \(O(n^2)\) 的,Dinic 算法是 \(O(n\sqrt{n})\) 的,但是都是可以过的.
因为数对这边只会连两条边,我们将数对作为右部点是更优的,能搜索出最大流的概率大大增加.
正解
咕.
当 \(m=1\) 或 \(n=2\) 时,答案为 \(1\);对于 \(n\le 10,m\le 20\),可以使用指数通过.
考虑枚举最终停留的位置 \(B\),以及在过程中达到过的最左和最右的地方为 \(L,R\),令这样方案数为 \(f(L,R,B)\),显然 \(ans=\sum f(L,R,B)\).
不妨先令 \(A\le B\),显然从 \(A\) 到 \(B\) 的路径上一定需要放置,现将这一部分减掉,剩下 \(M-(B-A+1)\) 个清仓券.
剩下的路径都是需要往返的,令 \(p_i\) 表示往返于 \(i\) 与 \(i+1\) 之间的贡献数,一个 \(p_i\) 贡献对应 2 个清仓券.
我们有如下限制:
- 只考虑 \(p_L,p_{L+1},\dots,p_{R-1}\),共有 \(R-L\) 个 \(p\).
- \(2\sum p_i=M-(B-A+1)\).
- 对于 \(i\in [L,A)\bigcup[B,R)\),要求 \(p_i\ge 1\).
- 对于 \(i\in [A,B)\),要求 \(p_i\ge 0\).
显然这样一种 \(p_i\) 对应一种放置,因为我们可以通过两种互相进行构造,即构成双射.
提前将 \(p_i\ge 1\) 的贡献减去,得到将 \(\frac{M-(B-A+1)}{2}-(A-L)-(R-B)\) (对于不能整除的 \(B\) 贡献为 \(0\))个元素分成 \(R-L\) 组,应用插板法可以得到:
\[f(L,R,B)=\binom{\frac{M+B-A-3}{2}}{R-L-1}
\]
扩展到 \(B<A\) 的情况:
\[f(L,R,B)=\binom{\frac{M+|A-B|-3}{2}}{R-L-1}
\]
注意由于 \(R-L-1\ge 0\),因此 \(M=1\) 的情况需要特判.
通过枚举 \(L,R,B\),我们就有 \(O(n^3)\) 的做法.
下面目标就是化简这个式子,使其达到 \(O(n)\) 的可计算情况.
下面过程中需要多次使用 朱世杰恒等式:
\[\sum_{i=0}^{n}\binom{i}{k}=\binom{n+1}{k+1}
\]
证明:
\[\sum_{i=0}^{n}\binom{i}{k}=\sum_{i=0}^n\binom{i+1}{k+1}-\binom{i}{k+1}=\binom{n+1}{k+1}
\]
推论:
\[\sum_{i=0}^{n}\binom{z+i}{k}=\binom{z+n+1}{k+1}-\binom{z}{k+1}
\]
我们丁真这个式子:
\[f(L,R,B)=\binom{\frac{M+|A-B|-3}{2}}{R-L-1}
\]
发现若将 \(L\) 与 \(R\) 固定,则 \(B\) 为变量,可以使用朱世杰恒等式.
但事实上我们可以将 \(A-B\) 整体看作一个变量,这样会简单很多.
由于 \(|A-B|\) 能否取到 \(0\) 与 \(M\) 奇偶性相关,因此进行分类讨论:
若 \(M\) 为偶数,则 \(M-3\) 为奇数,\(|A-B|\) 为奇数:
\[\begin{aligned}
\sum_{B=L}^{R}\binom{\frac{M+|A-B|-3}{2}}{R-L-1}&=\sum_{i=L}^{R}\binom{\frac{M-2}{2}+\frac{|A-B|-1}{2}}{R-L-1}\\
&=\sum_{i=0}^{\left \lfloor \frac{R-A-1}{2} \right \rfloor }\binom{\frac{M-2}{2}+i}{R-L-1}
+\sum_{i=0}^{\left \lfloor \frac{A-L-1}{2} \right \rfloor }\binom{\frac{M-2}{2}+i}{R-L-1}\\
&=\binom{\left \lfloor \frac{M+R-A-1}{2} \right \rfloor }{R-L}+\binom{\left \lfloor \frac{M+A-L-1}{2} \right \rfloor }{R-L}
-2\binom{\frac{M-2}{2}}{R-L}
\end{aligned}
\]
若 \(M\) 为奇数,则 \(M-3\) 为偶数,\(|A-B|\) 为偶数:
\[\begin{aligned}
\sum_{B=L}^{R}\binom{\frac{M+|A-B|-3}{2}}{R-L-1}&=\sum_{i=L}^{R}\binom{\frac{M-3}{2}+\frac{|A-B|}{2}}{R-L-1}\\
&=\sum_{i=0}^{\left \lfloor \frac{R-A}{2} \right \rfloor }\binom{\frac{M-3}{2}+i}{R-L-1}
+\sum_{i=1}^{\left \lfloor \frac{A-L}{2} \right \rfloor }\binom{\frac{M-3}{2}+i}{R-L-1}\\
&=\binom{\left \lfloor \frac{M+R-A-1}{2} \right \rfloor }{R-L}+\binom{\left \lfloor \frac{M+A-L-1}{2} \right \rfloor }{R-L}
-\binom{\frac{M-3}{2}}{R-L}-\binom{\frac{M-1}{2}}{R-L}
\end{aligned}
\]
通过枚举 \(L\) 与 \(R\),我们便有 \(O(n^2)\) 的做法.
注意到,对于两种情况,我们都需要计算:
\[s_1=\sum_{L,R}\binom{\left \lfloor \frac{M+R-A-1}{2} \right \rfloor }{R-L}+\binom{\left \lfloor \frac{M+A-L-1}{2} \right \rfloor }{R-L}
\]
以及:
\[s_2=\sum_{L,R}\binom{\frac{M-1/2/3}{2}}{R-L}
\]
我们先来计算 \(s_2\),考虑枚举 \(R-L\)(不然还能枚举什么).
计算满足这样长度的区间个数,记区间长度为 \(Len\).
区间左端点最左可能值是 \(\max(1,A-Len+1)\),于是区间右端点最左可能值是 \(\max(Len,A)\).
区间右端点最右可能值是 \(\min(n,A+Len-1)\),于是区间左端点最右可能值是 \(\max(n-Len+1,A)\).
因此满足区间长度为 \(Len\) 的区间共有:\(\min(n,A+Len-1)-\max(Len,A)+1=\min(n,A+Len-1)-\max(Len-1,A-1)\).
由于我们枚举的 \(i=R-L=Len-1\),代换一下就是:\(\min(n,A+i)-\max(i,A-1)\).
因此:
\[s_2=\sum_{i=1}^{n-1}\binom{\frac{M-1/2/3}{2}}{i}\times (\min(n,A+i)-\max(i,A-1))
\]
对于 \(s_1\) 的计算,我们同样考虑枚举区间长度,于是 \(L\) 与 \(R\) 成为变量,事实上将 \(A-L\) 与 \(R-A\) 看作变量我们可以统一处理.
记 \(R-L\) 为 \(i\),那么:
\[\begin{aligned}
s_1&=\sum_{L,R}\binom{\left \lfloor \frac{M+R-A-1}{2} \right \rfloor }{R-L}+\binom{\left \lfloor \frac{M+A-L-1}{2} \right \rfloor }{R-L}\\
&=\sum_{i=1}^{n-1}\sum_{j=\max(0,i-A+1)}^{\min(i,n-A)}\binom{\left \lfloor \frac{M-1+j}{2} \right \rfloor }{i}
+\sum_{j=\max(0,i+A-n)}^{\min(i,A-1)}\binom{\left \lfloor \frac{M-1+j}{2} \right \rfloor }{i}
\end{aligned}
\]
这里我们发现共同之处,考虑计算如下函数,便能计算出 \(s_1\):
\[s(Len,pos)=\sum_{i=0}^{pos}\binom{\left \lfloor \frac{M-1+i}{2} \right \rfloor }{Len}
\]
考虑分类:
若 \(M\) 为奇数,\(pos\) 为奇数:
\[\begin{aligned}
s(Len,pos)&=\sum_{i=0}^{pos}\binom{\left \lfloor \frac{M-1+i}{2} \right \rfloor }{Len}\\
&=\sum_{i=0}^{pos}\binom{\frac{M-1}{2}+\left \lfloor \frac{i}{2} \right \rfloor }{Len}\\
&=2\sum_{i=0}^{\frac{pos-1}{2}}\binom{\frac{M-1}{2}+i }{Len}\\
&=2(\binom{\frac{M+pos}{2} }{Len+1}-\binom{\frac{M-1}{2}}{Len+1})\\
\end{aligned}
\]
若 \(M\) 为奇数,\(pos\) 为偶数:
\[\begin{aligned}
s(Len,pos)&=\sum_{i=0}^{pos}\binom{\left \lfloor \frac{M-1+i}{2} \right \rfloor }{Len}\\
&=\sum_{i=0}^{pos}\binom{\frac{M-1}{2}+\left \lfloor \frac{i}{2} \right \rfloor }{Len}\\
&=2\sum_{i=0}^{\frac{pos-2}{2}}\binom{\frac{M-1}{2}+i }{Len}+\binom{\frac{M-1}{2}+\frac{pos}{2}}{Len}\\
&=2(\binom{\frac{M+pos-1}{2} }{Len+1}-\binom{\frac{M-1}{2}}{Len+1})+\binom{\frac{M+pos-1}{2}}{Len}\\
\end{aligned}
\]
若 \(M\) 为偶数,\(pos\) 为偶数:
\[\begin{aligned}
s(Len,pos)&=\sum_{i=0}^{pos}\binom{\left \lfloor \frac{M-1+i}{2} \right \rfloor }{Len}\\
&=\sum_{i=0}^{pos}\binom{\frac{M}{2}+\left \lfloor \frac{i-1}{2} \right \rfloor }{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+\sum_{i=0}^{pos-1}\binom{\frac{M}{2}+\left \lfloor \frac{i}{2} \right \rfloor }{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+2\sum_{i=0}^{\frac{pos-2}{2}}\binom{\frac{M}{2}+i}{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+2(\binom{\frac{M+pos}{2}}{Len+1}-\binom{\frac{M}{2}}{Len+1})\\
\end{aligned}
\]
若 \(M\) 为偶数,\(pos\) 为奇数:
\[\begin{aligned}
s(Len,pos)&=\sum_{i=0}^{pos}\binom{\left \lfloor \frac{M-1+i}{2} \right \rfloor }{Len}\\
&=\sum_{i=0}^{pos}\binom{\frac{M}{2}+\left \lfloor \frac{i-1}{2} \right \rfloor }{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+\sum_{i=0}^{pos-1}\binom{\frac{M}{2}+\left \lfloor \frac{i}{2} \right \rfloor }{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+2\sum_{i=0}^{\frac{pos-3}{2}}\binom{\frac{M}{2}+i}{Len}+\binom{\frac{M}{2}+\frac{pos-1}{2}}{Len}\\
&=\binom{\frac{M-2}{2} }{Len}+2(\binom{\frac{M+pos-1}{2}}{Len+1}-\binom{\frac{M}{2}}{Len+1})+\binom{\frac{M}{2}+\frac{pos-1}{2}}{Len}\\
\end{aligned}
\]
综上我们便可以求出 \(s(Len,pos)\).
对 \(s_1\) 中的式子运用前缀和调用 \(s(Len,pos)\) 便可以做到 \(O(n)\) 求解.
这道题 60 分的 \(O(nm)\) 做法应当是好想的.
先将路径反向,变成从 \(s\) 出发向每个起始丝线,将桥按照距离从大到小考虑:
定义 \(f_{i,j}\) 表示:第 \(i\) 个丝线,决策过 \(j\) 个桥之后的最小桥数.
初始状态为 \(f_{i,j}=\operatorname{dis}(i,s)\),显然 \(f\) 值有如下性质:
\[|f_{u,j}-f_{v,j}|\le \operatorname{dis}(u,v)
\]
那么考虑每一次决策,设此次桥连接的点为 \(a,b\).
对于所有 \(a,b\) 以外的点,令 \(f_{i,j-1}\to f_{i,j}\).
对于 \(a\) 与 \(b\),令 \(f_{b,j-1}\to f_{a,j}\),\(f_{a,j-1}\to f_{b,j}\).
让 \(a\) 与 \(b\) 左右两侧点进行更新,不存在更远且更优的点,否则会违背上面的性质.
再让新的 \(f_{a,j}\) 与 \(f_{b,j}\) 去更新,其他的点,即令 \(f_{a,j}+\operatorname{dis}(a,u)\to f_{u,j}\).
由于这里 \(dis\) 呈现公差为 \(\pm 1\) 的等差数列,因此可以使用线段树优化,需要区间修改,单点查询.
时间复杂度为 \(O(m\log n+m\log m+n)\).
原题
- 无
- 无
- [ICPC 2021 Jakarta R] Feeder Robot
- [ICPC 2021 WF] Spider Walk