其他分享
首页 > 其他分享> > ptz22w 部分题解

ptz22w 部分题解

作者:互联网

Day 1. Kyoto U Contest 2

F. Flatland Currency

考虑整个问题其实就是要背包,特殊性质是每个物品的权值 \(\leq 4\)。

先把相同权值的合并,然后每一类是一个凸函数,于是可以逐个卷积合并,复杂度是 \(\mathcal O(n\log n)\)。

题解做法是如果按照模 \(12\) 分类,则每一个都是凸函数,枚举每个模 \(12\) 之后的值之后可以凸函数卷积合并,这样是 \(\mathcal O(12\cdot 6\cdot 4\cdot 3\cdot n)\) 的。

H. High Powers

考察多项式 \(f(x)=(x-a)(x-b)(x-c)\),不难发现,这就是

\[f(x)=x^3-sx^2+tx-u \]

并且有 \(f(a)=f(b)=f(c)=0\),于是将整个问题降幂,降幂之后的子问题满足 \(0\leq n,m\leq 2\),这些问题的答案都是平凡的。

J. Juggler’s Trick

先考虑如果已知序列怎么做:我们对每个前缀求答案。

考虑一下转移,相当于对每个能被选完的区间 \([l,r]\) 做贡献 \(f_r\gets f_l+r-l\)。

考虑一下什么样的区间是能被选完的,首先一个必要条件是 \(r+b|len\),且 \(\frac{r-b}{r+b}len=S_r-S_b\)。注意到如果满足这个条件则我一定可以用中值定理找到其中一个长为 \(r+b\) 的合法区间,于是这也是充分条件。

然后考虑一下怎么确定颜色,我们依然对每个前缀求答案,但此时能转移当且仅当满足一个偏序关系,对这个跑个分治动态二维偏序即可。

L. Lion and Zebra

把 \(u\) 提为根,然后注意到有一类状态是重要的:当前点一路走到 \(v\) 且过程中每次 \(d\gets d-2\),换句话说,\(d\) 在当前点的子树中。记这个状态的答案为 \(f_v\),则有转移:

\[f_u=\max(\max_{v\in son(u)}\min(f_v,dis_v+d_u+1),dis_{fa/u}+d_u+2)\\ \]

其中 \(dis_u\) 为到子树最远的叶子的长度,\(d_u\) 表示走到这个点的时候的 \(d\)。

其中第一个和式相当于枚举一个儿子走下去然后考虑 B 是否在子树里,第二个相当于直接往父亲 run,这个柿子成立因为我最优方案中如果 B 不在子树一定会直接 run 子树,往回 run 同理。

现在来考察两个柿子的大小关系,注意到:

\[\max_{v\in son(u)}\min(f_v,dis_v+d_u+1)\leq \max_{v\in son(u)}dis_v+d_u+1=dis_u+d_u \]

这直接导出:

\[dis_u\leq dis_{fa/u}+2\to f_u=dis_{fa/u}+d_u+2 \]

换句话说,我如果走到一个不是长儿子的点且 B 就在其子树中,则我下一步会直接 run 到当前点的长儿子里去。

于是分类讨论一下发现当 \(d\geq 3\) 的时候我一定会走向长儿子,且 B 也会在最长的儿子里恶心我。而 \(d\leq 2\) 的时候的情况是简单的,于是模拟一下就做完了。

标签:max,run,cdot,题解,凸函数,leq,ptz22w,部分,dis
来源: https://www.cnblogs.com/whx1003/p/16523147.html