今天花了一晚重打CSP-S 2021,但是最终只得到了 145pts ,比预期要低很多。

(甚至是用IOI赛制打的)

回顾这段时间的时间安排和策略,做如下反思 :

首先在 T1 上嗑了太久,开场前 80+ 分钟都在看 T1 ,但是最终竟然也没想到正解。

{
UPD 9.28 :
看了看题解,发现距离正解就差一点点……md我甚至想到了前缀和,结果死在没想到给廊桥编号每次维护最小的廊桥编号。

现在属于是经典看题解秒懂了。

}

然后再次浏览了整套卷子,觉得 T3 比较好做,于是手玩了一下样例准备找性质糊结论。

然后很顺利地发现了某性质 :

  • 对于每个数只出现两次,由于维护的是回文串,当第一次出现位置确定之后第二次位置随之确定。

于是我们要保证第一次取出的位置能使第二次成立。

然后发现每次只能从头尾取,而对应位置在队列中间,如果两个不同数的对应位置不再中间相邻的话,那么他们对应位置中间的数就没办法取出……可能描述不太严谨。

然后这个思路让我决定在维护队列两侧的 $l,r$ 同时维护中间的 $ql,qr$ ,表示连续的 “对应位置” 形成的子串,每次先尝试取 $l$ ,看对应位置能否和 $ql,qr$ 拼接,然后再取 $r$ 。

这样每次维护取 $l$ 还是 $r$ ,可以获得答案序列的前一半,输出时进行匹配构造容易获得后一半。

发现开头选 $l$ 还是选 $r$ 不方便同时处理,所以处理两次。

想完这些大致花费了 $20$ 分钟,感觉结论没什么问题就开始写。

写完之后调了调过了样例,然后又调了调过了大样例,然后交了一发只有 $64pts$ ,觉得前边没什么问题,调了调之后发现构造后一半答案出了锅。调试的时间花费总共大概是 $50$ 分钟,交上去之后切掉了。

所以 T2 大概花了 $70$ 分钟AC,在思路上很通畅,代码实现出现了问题。

然后时间发现不是很多了,看了看T3觉得没思路。

然后看T4,似乎有最小割的写法,但是看不很清,到4h的时候也没写完。

然后这一场就结束了。

by Pozhu
2022.9.27