ARC155

ARC心路历程:

看一眼题,目测是分讨。

结合大小样例可以有一个基本的思路,分小数据和大数据一步步讨论。

好,那么假设 k 非常小,取回文串的 mid ,如果 mid<=n <那么回文串的形态其实直接由 s 固定死了,模拟一下判断是否有冲突就可以了。

好,现在看考虑如果比较大怎么办,其实就是 mid >n 的情况,画一下图。

第一次, t 右侧对应一个 s。

翻转过来, t 左侧对应一个 s.

再翻转过来,t右侧多对应两个 s。

然后无穷无尽好像没头了。

这个时候,wxq 已经开始大喘气狂敲键盘不知道在写什么。观察一下样例,看看有没有什么可以取巧的地方。

发现,小样例合法的时候,其余数位置恰好是回文串。回想刚才翻转过来翻转过去不停迭代的情况,在一般情况下确实会在中间剩下一段不完整的,而余数就对应这一段。

于是猜一手看余数位置是不是回文串。

果不其然 wa 了。

先检查一下是不是因为更低级的原因搞错了,显然不是,那就是猜想错了。

继续在纸上模拟这个过程,发现有可能在中间出现空隙,也有可能没有,如果没有出现空隙,那么应该简单判一下就行了,否则就麻烦了。

手画的实在太难看,于是开始用尺子画。

有个问题,这个翻转过程一直在迭代,但我不能保证只要有限次下能够覆盖完就能保证回文。

但这个我暂时证不了,那么假设是对的,发现中间那部分具体是什么要取决于 t 除去 s 奇偶性,模拟一下发现这个 t 上的 s 除了第一次以外每次加两个,那么除了判奇偶性以外,还要看一下这两倍出现的次数,另外由于 t 上的 s 是正反交替的,还要考虑这是正的还是反的,那么又是大量分讨。

于是开始码,一边码一边考虑是否有漏掉的情况和代码上的细节,然后发现越想越多。

然后我觉得这太扯了。

我现在交了两发,wxq 还有 zyf 一直在狂交,5发 6发 7 发,wxq 每次交都要疯狂点击刷新屏幕,然后长叹一声,然后沉思,然后又莫名猛地狂敲键盘。

感觉一直乱试没什么意义。虽然我知道 wxq 总会是会非常大胆的乱猜结论,然后非常神奇的试出来,然后非常激动地 “嗷!!” 一声。我根本不用看榜就知道他有没有做出 T1 ,没 “嗷” 就是没做出来。

继续刚才的过程,我发现如果不考虑迭代的无限性保证不了是个回文串。

考虑是否和有一个 s 有关系,貌似也不是。

于是在纸上画迭代后的情况,发现正反有交,这个交是能够通过分讨讨出来,而这个交限制是死的,于是猜测是否和这个交有关,手玩一下小样例,不是很对。

考虑有没有什么其他的特征,比如两个 s 相接的段什么的,好像也不是。

瞎猜结论。

又看了一眼模后的余数,看一下和 s 有啥关系。好像没啥关系。

看一眼 T2 吧。

发现 T2 好像开个线段树就行了,复杂度也对,空间也对。

不过线段树标记的处理可能要分讨,操作也要分讨,询问也要分讨,每组 ab 还要讨论一下绝对的值变化,这貌似又有好多情况。

于是把线段树写了,突然发现我这线段树既搞标记永久化不传递标记,同时也得变相传递标记。

有点懵逼,仔细想了一下怎么时限,经过一点试错基本确定了。

然后就是操作的分讨。

首先,分 a<=b,a>b

进一步,分左边和右边分讨。

对于左边,得找到一个分界点,分界点两边不同得分讨。

对于分界点左边,得分越界和不越界两种情况分讨。

对于右边,貌似是个固定值。

中间还得找个分界点,分左右两边分讨。

对于分界点得份奇偶分讨。

分讨分讨分讨。

然后发现过不去。

冷静一下,发现我犯浑了,很多地方压根不需要分讨。

只要分左边和右边分讨。

每一边按分界点分讨。

对于分界点要注意是否越界分讨。

这里耽误时间了。

然后基本写完了,然后过不去。

考虑要不要回头看一下T1.

然后比赛结束了。

你可能感兴趣的:(考试牢骚&总结,算法)