2022 牛客多校第二场题解

2022 牛客多校第二场题解

《关于我和我的队友没有人会博弈和计算几何这档事》

《关于我数据结构已经写不动了这档事》

A Falfa with Polygon

以为是计算几何,结果是 dp。我用的是随机化。

考虑 \(f(s,i,j)\) 表示从 \(s\) 开始走了 \(i\) 条边现在在 \(j\) 点,那么

\[f(s,i,j)=\text{max}(f(s,i-1,k)+dis(k,j))(k<j) \]

直接做是 \(O(n^3k)\) 的。

其次,凸包有个性质:对于顺次的四个点 \(i<i'<j<j'\),有 \(dis(i,j)+dis(i',j')\ge dis(i,j')+dis(i,j')\),画个图,三角形两边大于第三边。这是四边形不等式。

这告诉我们什么呢?\(f(s,i,j)\) 的决策点 \(k\) 是递增的。具体可以反证法,假设 \(i'<i\),推出

\[dp(i)+dis(i,j)\ge dp(i')+dis(i',j) \]

\[dp(i')+dis(i',j')\ge dp(i)+dis(i,j') \]

与刚才的结论矛盾!(这里下标不太一样,i 是 j 的决策点,i' 是 j' 的决策点)

那么单次就变成 \(O(nk)\) 了。

再发现一个大小为 k 的凸包,任意一个点开始都可以。

可以随机,不断找起点,期望 \(\frac nk\) 就能找到答案。

因此期望是 \(O(n^2)\) 的。

不敢猜结论,哎。

首先在异或和为 0 时,轮数是和。证明取 lowbit 最小的数 -1。方案数是能够 -1 的数的个数,这里要特别判断一下。

异或和 >0 时,转化成上述情况即可。

第一次写没取 log,实属长了教训,WA 了 8 发。

F NIO with String Game

trie 树题,本身不难,不过有点坑。

首先字符串有可能到 \(10^{14}\) 这个级别,其次第二个操作 p 要开 long long。

还有这个超出字符的处理,要记下剩下的字符个数和不在 trie 树的第一个字符用来比较。

帮 11:50 睡醒的队友签了个到。主要不是题,是那个结论。会了再补。

H Take the Elevator

注意,不是 a 直接到 b,可以中途到其他楼层停留一下的。(反正就是前缀和)

后面的题都是队友写的,我没做。

posted @ 2022-07-24 22:42  Owen_codeisking  阅读(126)  评论(0编辑  收藏  举报