Codeforces Round #809 (Div. 2)总结

比赛地址

比赛情况

排名:324
AC:4 / 6

题目分析

A

显然对于每一步,如果靠前没选就选靠前的,否则选靠后的

B

加入两个相同数字之间可以连起来,它们相隔的个数必然是偶数,然后模拟即可

C

对于奇数的情况显然,每个分别计算即可

对于偶数的情况我采取dp,去掉左右两个,中间两个为1组,设 dpi,0/1 表示在第 i 放在前一个/后一个的最小代价,cal(x) 表示第 x 个的代价,则

dpi,0=dpi1,0+cal(x)dpi,1=min(dpi1,0,dpi1,1)+cal(x+1)

答案即为 min(dpn,0,dpn,1)n 要变换一下)

D1

dpi,j 表示前 i 个数最小值为 j 时最大值的最小,如果 j 不存在就为 inf

而如何求当前第一个大于等于 j 的值呢?二分。

然后就从上一步推过来即可。时间复杂度 O(n2logn)


赛后看题解发现不用二分,可以直接 O(1) 求出,所以可以优化个 log

赛后总结

虽然AC没实现突破,但较为顺利

开场3min过A,B盲猜个结论16min时过

C就是纯模拟,偶数一开始以为只有两种情况,后来过不了样例改成dp,26min时过

D1想了一会就想到dp,但一直调不出,61min时才过

然后D2和E想了一会想不出就弃了

posted @   zhangtingxi  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示