Codeforces Round 999 比赛记录

前情提要

这个菜鸡CF上了 \(\color{darkcyan}Specialist\),心情大好,正好赶上放假,决定打一场CF。

赛时记录

A

上来脑子抽了,吃了一发罚时。发现写错了一种情况,改过来就过了。
感觉并不是一个好的开始。

B

竟成为本人唯一一遍过的题,虽然写的时候有点慌。

C

DP。一开始认为空间不够,但发现可以用滚动数组。遂开写。
写挂了。debug一番后认为是清除先前数据的锅,于是写了一个自认为好用的方法,交上去吃了一发罚时。
认为是没有memset的锅,于是写了memset,交上去吃了一发罚时。因为TLE了。
于是删掉memeset,把填表改成刷表,交上去AC了。此时时间01:21:32。

D

看了一下,决定去掉不变的部分并对变化的部分进行处理,然后当成合并果子做。
期间对着 \(|x-y|\le 1\) 这个条件产生了一些想法,但是与我当时的做法无关。
交上去,吃了两发罚时。此时时间为02:06:38。
感觉不对劲,自己搓了个样例一测发现不对,紧接着发现自己假得很彻底。
有点慌。
忽然想起来之前的想法,觉得可写,于是开写。
新的做法写起来比合并果子屎山好写多了。交上去过了。

后记


要是能少吃几发罚时就好了
没掉rating。

A

容易看出,每加入一个数,最终 \(s\) 都会是奇数。
如果有偶数那么答案为奇数的个数 \(+1\),否则为奇数的个数 \(-1\)
赛时多讨论了一种情况。

B

排序,找到一对相等的边,删除。这对边是腰。
找到一对差小于二倍腰长的边,这对边是底。
赛时想的是找最长的一对相等的边,但是如果有两对及以上相等的边,那么一定可以组成梯形。而如果只有一对,那么只能选它。

C

赛时甚至写了滚动数组,然而并没有建liar数量那维的必要。因为一个人左边的liar数量由它左侧两人的左边的liar数量控制。
如果一个人 \(i\) 是liar,那么他左边的人 \(i-1\) 一定是诚实的人,所以他左边的人左边一定有 \(a[i-1]\) 个liar,也就是说到他这里就有 \(a[i-1]+1\) 个liar。
如果 \(i\) 是诚实的人,那么他左边一定有 \(a[i]\) 个liar。
因此,令 \(dp[i]\) 表示 \(i\) 是诚实的人的方案数。
需要考虑两种情况:
如果 \(i-1\) 是诚实的人,那么应当满足 \(a[i]=a[i-1]\),此时将 \(dp[i-1]\) 加入答案。
如果 \(i-1\) 是liar,那么\(i-2\)一定是诚实的人,因此应当满足 \(a[i]==a[i-2]+1\),此时将 \(dp[i-2]\) 加入答案。
最终的答案即为 \(dp[n]+dp[n-1]\),即 \(n\) 为诚实的人和 \(n\) 为liar这两种情况。

D

一开始以为像合并果子一样,优先把小的数合并,然而这样做没有考虑到,一个数跟其他数的合并方案并不是唯一的。
由于 \(|x-y|\le 1\),对于一个由 \(a\) 中数字合并而成的数,它的拆分方案是唯一的,所以我们反其道而行之——分裂果子!
对于每个由 \(a\) 中数字合并成的数 \(x\),都有 \(x=\lfloor\frac{x+1}{2}\rfloor+\lceil\frac{x+1}{2}\rceil\)
因此,我们处理 \(b\) 中的每一个数 \(b[i]\)
由于一个数只能拆分成比自己小的数,而不能拆分成比自己大的数,所以我们从大到小进行操作。
显然可以用堆,即priority_queue
由于一个数只能拆分成两个数,不能拆分成零个数,所以当 \(b\) 的堆比 \(a\) 的堆大时停止拆分输出 \(No\)
对于 \(a\)\(b\) 的堆头 \(u\)\(v\)
如果 \(u=v\),那么匹配成功将 \(a\) 的堆头删除;
如果 \(u<v\),那么把 \(v\) 拆分成 \(\lfloor\frac{v+1}{2}\rfloor\)\(\lceil\frac{v+1}{2}\rceil\) 两部分,塞回 \(b\) 的堆里。
如果 \(u>v\),那么 \(v\) 再怎么拆也匹配不了,停止拆分输出 \(No\)
注意判边界条件 \(u=1\) 。此时如果没有匹配则停止拆分输出 \(No\)
两个堆至少有一个空了就停,如果两个堆都是空的那么输出 \(Yes\),如果有一个堆没空,那么该堆剩下的这些元素是匹配不了的,所以输出 \(No\)


\[\huge End? \]


upd:D被Hack了。
小丑了,没认真看题解,还真是堆,是分裂果子。这就改这就改。

posted @   整齐的艾萨克  阅读(62)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示