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\)。
\]
upd:D被Hack了。
小丑了,没认真看题解,还真是堆,是分裂果子。这就改这就改。
Codeforces Round 999 比赛记录的更多相关文章
- Educational Codeforces Round 77 比赛总结
比赛情况 我太菜了 A题 加减乘除不会 B题 二元一次方程不会 C题 gcd不会 就会一个D题二分答案大水题,本来想比赛最后一分钟来一个绝杀,结果 Wrong Answer on test 4 比赛总 ...
- BestCoder Round #92 比赛记录
上午考完试后看到了晚上的BestCoder比赛,全机房都来参加 感觉压力好大啊QAQ,要被虐了. 7:00 比赛开始了,迅速点进了T1 大呼这好水啊!告诉了同桌怎么看中文题面 然后就开始码码码,4分1 ...
- BestCoder Round #93 比赛记录
机房又迎来了一次BC.大家都沸腾了... BC开场,大家全都瞬间开始 啪啦啪啦啪啦啪啦 都要赶紧水过第一题. 第一题明显直接贪心就好了,用map去重. 本人荣幸地第一个写完,提交 Wa. (崩溃的内心 ...
- Codeforces Round #564 比赛总结
这次是中国大佬出题,结果被虐惨了. A. Nauuo and Votes #include<bits/stdc++.h> #define Rint register int using n ...
- 【cf比赛记录】Codeforces Round #601 (Div. 2)
Codeforces Round #601 (Div. 2) ---- 比赛传送门 周二晚因为身体不适鸽了,补题补题 A // http://codeforces.com/contest/1255/p ...
- 【cf比赛记录】Codeforces Round #600 (Div. 2)
Codeforces Round #600 (Div. 2) ---- 比赛传送门 昨晚成绩还好,AC A,B题,还能上分(到底有多菜) 补了C.D题,因为昨晚对C.D题已经有想法了,所以补起题来也快 ...
- 构造 Codeforces Round #135 (Div. 2) B. Special Offer! Super Price 999 Bourles!
题目传送门 /* 构造:从大到小构造,每一次都把最后不是9的变为9,p - p MOD 10^k - 1,直到小于最小值. 另外,最多len-1次循环 */ #include <cstdio&g ...
- 刷题记录:Codeforces Round #734 (Div. 3)
Codeforces Round #734 (Div. 3) 20210920.网址:https://codeforces.com/contest/1551. 编程细节:下标定义不要一会[1,n]一会 ...
- 刷题记录:Codeforces Round #739 (Div. 3)
Codeforces Round #739 (Div. 3) 20210907.网址:https://codeforces.com/contest/1560. --(叹). A 不希望出现带" ...
- 刷题记录:Codeforces Round #724 (Div. 2)
Codeforces Round #724 (Div. 2) 20210713.网址:https://codeforces.com/contest/1536. div2明显比div3难多了啊-只做了前 ...
随机推荐
- Java日志记录几种实现方案
在平时使用到一些软件中,比如某宝或者某书,通过记录用户的行为来构建和分析用户的行为数据,同时也能更好优化产品设计和提升用户体验.比如在一个订单系统中,需要确定追踪用户的行为,比如: 登录/登出 浏览商 ...
- Astro Zen Blog |一个优雅、极简、强大的博客
介绍 Astro Zen 博客项目 如果你想部署一个自己的静态博客,又不想到处折腾,并且是熟悉的前端技术栈,你可以尝试下:Astro Zen Blog! Astro Zen Blog 是一个使用 As ...
- manim边做边学--淡入淡出
本篇介绍Manim中的淡入和淡出动画效果. 淡入FadeIn 主要用于让对象以渐变的方式在场景中显现. 它的特点是视觉上柔和过渡,能自然地引导观众注意新出现的元素. 淡出FadeOut 则是使对象逐渐 ...
- 鸿蒙UI开发快速入门 —— part04: 组件的UI逻辑复用
1.为什么要复用? 从鸿蒙UI开发快速入门 -- part02: 组件开发文章中我们学习到,build()函数是我们构建用户UI界面的入口函数,在该函数中完成UI样式定义以及事件定义. 实际的项目开发 ...
- 鸿蒙UI开发快速入门 —— part03: 组件的生命周期
1. 什么是组件的生命周期 组件的生命周期是我们开发一个组件必须要关注的内容,组件的生命周期,指的是组件的创建.渲染.销毁等过程.因为这个过程就类似于人从出生到离世的过程,从而称为:组件的生命周期. ...
- 【软件工程与UML】第1章 笔记和练习题
基本概念 软件 = 程序 + 数据 + 文档 软件的特点 抽象性:软件是一种逻辑实体 可复制性:软件是通过人们智力活动,把知识和技术转化为信息的一种产品. 不会磨损: 依赖性:软件的开发和运行经常收到 ...
- Mysql数据库连接失败SSLException: Unsupported record version Unknown-0.0
问题描述:mysql版本:5.7.27jdk版本:1.8.0_201 tomcat日志中报错,显示连接数据库失败,报错信息如下: The last packet successfully receiv ...
- Promise/A+ 规范 - 中文版本
Promises/A+ 这是一个开放标准,旨在让不同开发者实现的 JavaScript Promise 能够无缝衔接并应用--由前辈们制定,为其他后来者提供参考 一个 promise 所表示的是异步操 ...
- Qt/C++音视频开发79-采集websocket视频流/打开ws开头的地址/音视频同步/保存到MP4文件/视频回放
一.前言 随着音视频的爆发式的增长,各种推拉流应用场景应运而生,基本上都要求各个端都能查看实时视频流,比如PC端.手机端.网页端,在网页端用websocket来接收并解码实时视频流显示,是一个非常常规 ...
- Qt/C++编写网络摄像头推流(4路1080P主码流只占用0.2%CPU/极低延时极速响应)
一.前言说明 将从网络摄像头拉流过来的视频流重新推流出去,是目前一个很常规的做法,尤其是推流到流媒体服务中心,这样流媒体服务中心就把散落在各个区域的监控摄像头集中起来统一管理,同时提供对外一致的访问接 ...