Codeforces Round #745 比赛记录(vp)

 


Codeforces Round #745 比赛记录(vp)

赛时:ABC
赛后:ABCD

题解

会的都会

总结

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

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

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

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

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

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

我仔细的看了一下题,发现 a5,b4,不一定恰好是 54。某游戏中确实也是这个设定。

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

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

然后枚举左子树大小,枚举左边第 m1 层多少个,转移。复杂度是 O(n5)

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

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

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

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

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

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

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

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

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

一种可行的做法是:

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

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

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

posted @   Flandre-Zhu  阅读(76)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示