Codeforces Round 960 (Div.2)
A
非常容易观察到性质,注意 Alice 为先手,发现当 \(a_{\max}\) 的个数为奇数时显然能 win,但如果 \(a_{\max}\) 的个数为偶数且有一个数具有奇数个可以作为跳板,那么也能 win,否则就 lose。
B
结论:\(presum_x \geq 2 + presum_{y - 1} \geq 2 + \min{presum_i} \geq 1 + \max{presum_i}\),后缀和同理。
C
模拟一下容易发现每次操作后整个数组都会向后移动。
我们首先对数组进行一次操作模拟,发现整个数组就变成单调不降的了。
之后我们开始观察,对于一个连续的序列 \(a[l, r] = x (l \lt r, x \gt 0)\),在一次运算之后,得到一个新的限制 \(a[l + 1, \min{(r + 1, n)}] = x\) 成立,然后再给结论:如果数组中所有非零连续段(出去最后一段)的长度都大于 \(1\),那么数组就遵循一个 “右移” 定律。
对于 “右移” 数组,不难得到 \(b_i \lt b_{i + 1} \lt b_{i + 2}\),可以推断出 \(b_i = a_i, b_{i + 1} = a_{i + 1}\),并且至少有 \(a_j = a_{i + 1}(j \leq i)\) 成立,这也就说明 \(a\) 并不是非单调递减的,也就是说经过 \(2\) 次运算总能得到一个 “右移” 数组。
D
考虑贪心,对于 \(a_i\) 足够大的情况,我们一定会在 \(i\)-th 行上使用操作 \(2\),具体的 \(i\) 是多少呢?
对于 \(a_i \geq 5\) 的情况直接使用操作 \(2\) 即可,因为至少需要 \(3\) 个 \(2 \times 2\) 的网格来覆盖,而在 \(i - 1, i, i + 1\) 行进行三次 \(2\) 操作带来的收益显然更大。
然后讨论一下 \(a_i \lt 5\) 的情况,考虑从左到右:
- 没有黑色格子
- 有 \(\leq 2\) 个黑色格子,放入一个 \(2 \times 2\) 的子网格
- 有 \(\gt 2\) 个黑色格子,直接进行一次 \(2\) 操作即可
总结一下,对于 \(i\)-th 行,对于当前行来说 \(i - 1\)-th 的影响只有:
- 不受影响
- 第 \(3\) 列和第 \(4\) 列的单元格被涂成白色
- 第 \(1\) 列和第 \(2\) 列的单元格被涂成白色
E
交互题。
当我们查询子树的时候,如果返回 \(0\),那么删除整棵子树。注意到我们可以查询任意叶子节点,那么如果返回了 \(1\) 就直接跳出,否则鼹鼠就要往父节点跑,再考虑如果查询子树时返回了 \(1\),那么就再查询将其驱逐出当前的子树跳往父亲。
朴素的做法处理起来太麻烦,而且 Easy & Hard 还需要做优化,官方的题解给的做法太麻烦了,给一个更优的解法:
查询任意的叶子节点 \(70\) 次(均摊),然后删除 \(dep_{\max} - dep_v + 1 \leq 70\),那么树就被拆分成了 \(\leq 70\) 条链,check 一遍跑过去就可以了,这样跑得飞快。
F
无端联想 % 你赛的最大 \(C_{\triangle}\),主席树挂大分……
非常明显需要使用线段树维护,明确我们需要做什么.
注意到对于一份 “局部” 的最大多边形线段 \([l, r]\) 必须满足 \(\min{a_{l - 1}, a_{r + 1}} \geq 2 \cdot (a_l + \dots + a_r)\),当然包括 \(l = 1, r = n\) 的情况。
当且仅当 \(\sum_{i = 1}^{r} a_i \leq 2 \cdot a_i\) 时,定义区间 \([l, r]\) 的后缀 \([i, r]\) 为 special,同样的前缀也定义为 special。
观察性质,最多有 \(O(\log{(\max a)})\) 个 special 后缀,因为从定义中不难得到一个 special 之和至少是前一个 special 之和的 \(2\) 倍,因此我们可以合并左边区间的 special 后缀和右边区间的 special 前缀,这部分可以使用 two-pointers 来完成,然后就可以获取到一个跨越区间的答案了。
Codeforces Round 960 (Div.2)的更多相关文章
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
- Codeforces Round #262 (Div. 2) 1003
Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...
- Codeforces Round #262 (Div. 2) 1004
Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...
- Codeforces Round #371 (Div. 1)
A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...
- Codeforces Round #268 (Div. 2) ABCD
CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
- 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts
题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...
随机推荐
- Goby 漏洞发布|(CVE-2024-45195)Apache OFBiz /viewdatafile 代码执行漏洞【已复现】
漏洞名称:Apache OFBiz /viewdatafile 代码执行漏洞(CVE-2024-45195) English Name:Apache OFBiz /viewdatafile Code ...
- C# 调用WebService 笔记
最近开发工作涉及到一些关于webService调用的问题,因为太久没有做过这部分,踩了一点坑,做个笔记记录一下,避免下次踩坑. 说明 C#调用webService基本有两种方法,一种是静态调用,也就是 ...
- JavaScript – 理解 Function, Object, Prototype, This, Class, Mixins
前言 JavaScript (简称 JS) 有几个概念 Object, Prototype, This, Function, Class 是比较难理解的 (相对其它语言 C# / Java 而已),这 ...
- 选择:Qt Creator、Qt Designer、Qt Design Studio,三种开发工具,您选择哪一种?
前言 本文介绍了三种QT开发工具的特点,以及各自的优点和缺点. QT三种工具对比 QT提供的工具 Qt Creator: 扮演的是QT Widgets和QT QML的IDE的角色. 优点: 可以编写C ...
- QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?
简介 QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用. 目录 什么是 ECMAScript ? JavaScri ...
- 加入 Flutter Engage,Pick 您的专属 Dash 形象!
Flutter Engage 活动精彩来袭 对 Flutter 团队的开发者们来说,交流的重要性不言而喻,和您一样,我们也希望开发者们能够在不同的情境下进行互动分享.于是我们为您准备了一场特别的线上活 ...
- android 代码如何增加atrace跟踪
在 Android 代码中增加 Atrace 跟踪,可以使用 Android 提供的 android.os.Trace 类.这允许你在应用代码中手动添加自定义的跟踪点,以捕获特定代码段的执行情况.以下 ...
- 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊
本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的安装配置.故障处理.性能优化等日常实践操作,以及常用脚本.注意事项等总结 ...
- markdown.css 设置文章的样式
返回的详情文章内容是标签加内容文字,使用 markdown,css 渲染样式 : .markdown-body .octicon { display: inline-block; fill: curr ...
- 15. Vue 数据双向绑定原理
在初始化 Vue 实例的时候,会遍历data中的数据,通过 Object.defineProperty 给数据添加 getter 和 setter 函数 ,获取数据触发 getter 函数 ,修改数据 ...