CF1919D 01 Tree

Problem - 1919D - Codeforces

01 Tree - 洛谷

  • 今天是山东省选 Day1 考完的晚上,其实考完 NOIP2023 的时候就已经退役了,这次来只是考着玩的。一想到明天晚上又要回到 whk 的生活心里又有些对 OI 舍不得。

  • 我不清楚明天的省选到底会正常发挥还是心态爆炸,也不知道题难还是简单,我只知道明天就要结束了。

  • 最近自己在训练 cf 14002100 的贪心题,主要是想训练一下思维,发现自己 >2000 的题产出挺困难的,有空训练一下。

  • 不说多了,开始说这道题。

  • 首先分析第一个样例,同样例解释的图,我们可以发现我们可以把 3 4 的那一部分缩成一个点,此时序列变为 2 1 0 1,依然是可构造的。

  • 因此我们就来试着猜想一个结论:如果原序列每次把相邻两个满足 x x+1 的数缩成 x,缩到最后只剩下 0 的话就说明满足,否则不满足。

  • 我看到这个问题转化后首先想的是区间 dp,但显然复杂度太高了。然后又想因为不可能会有数比最大值更大,因此我们可以从最大值开始操作,看能否操作。但又发现对于多个相同的最大值无法确定判断顺序。遂看题解。

  • 题解里有一个人的做法非常巧妙,就是对于每个值非 0i,记左边第一个 <ai 的位置为 L,右边第一个 >ai 的位置为 R,则需要满足 aL,aR 中至少有一个是 ai,并且原数组中有且只有一个 0

  • 为什么这么干是对的呢?我感性理解了一下。当对最大数用这种方式判断的时候,显然成立。然后对于一个 ai,如果 [L,i),满足条件则一定会被缩成 aL,然后又能和 ai 缩成一起。

posted @   FOX_konata  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示