Codeforces Round #745 比赛记录(vp)

Codeforces Round #745 比赛记录(vp)

赛时:ABC
赛后:ABCD

题解

会的都会

总结

A题,数排列!恐怖,吓到了我一下。我在冷静观察样例之后发现答案仿佛是n!/2,仔细一想确实,好像有对称性。我模糊的感受到了它的对!再结合是div2的A题,比较简单,交一发,过了!

要自信,不能被题目吓到,冷静思考

对于快节奏的比赛,可以在感受到正确性之后啪的交一发,简单题还行,复杂问题要慎重

B题,我上来就看出来,是个大讨论。第一发少讨论了一个情况,改一下过了。

一定要注意 小数据!!!1

C题我上来就会了,因为我玩过 “某游戏”,因此没怎么看题面就懂了,然后我就枚举传送门的左上角,看看 (5 imes 4) 的位置,要改多少下。然后 WA on 18

我仔细的看了一下题,发现 (age 5,bge 4),不一定恰好是 (5)(4)。某游戏中确实也是这个设定。

那咋整,我只会 (n^4)!没事,冷静,看看 (n^4) 怎么优化。一般优化的套路就是,我枚举其中的三个,第 (4) 个用数据结构优化。仔细一想,我枚举上下边界之后,相当于一个 (f(a)+g(b) (a<b)) 的最大值。用一个叫做 “前缀max” 的数据结构,就可以优化了!看来这是个数据结构题 (雾)。把这个数据结构打出来,我们就A了!(n^3) 的。

D题我推了一波,我发现一个位置左右不同的max数,就是它在笛卡尔树(大根)上的点深度。然后对着笛卡尔树dp就行了!套路地,(f(n,m,k)) 表示 (n) 个点,第 (m) 层有 (k) 个点,方案数。

然后枚举左子树大小,枚举左边第 (m-1) 层多少个,转移。复杂度是 (O(n^5))

鉴于CF机飞快,这个东西上界多,常数小,我大胆猜测它能过! —— 然而WA了。

我后来就一直在看它为啥WA,死活看不出来。后来和标算相比较,发现我有一个地方应该从 (0) 开始,我写成 (1) 开始。

那是在转移的时候,枚举左边的 (m-1) 层有 (k'(k'<k)) 个。

此时,我们应该想想我们是哪个情况没考虑到

但我考场上就是在想,死活没想出来,那咋办?

我考场上已经分析出来,当 (k) 小的时候,这个代码没问题,(k) 一旦大起来就⑧行了。

那就应该多看看关于 (k) 的部分啊啊啊

那我为什么没去看看 (k) 的部分,因为当时时间紧张,快结束了,我就整篇代码漫无目的的看,希望运气爆棚能够让我看到一个bug。

事实上,改掉了这个问题以后,还是无法通过:TLE on 12。我赛场上猜它能过,实际上不太能。

一种可行的做法是:

if (k>45) {puts("0"); return;}

可以通过打表发现,也可以毛估估,总之,能过!

这就是这题垃圾的地方,复杂度不确定,就靠瞎搞;搞过去很开心,搞不过去不开心,但是并没有意义

原文地址:https://www.cnblogs.com/LightningUZ/p/15426364.html