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)的更多相关文章

  1. 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 ...

  2. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  3. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. 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 ...

  7. 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 ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. Goby 漏洞发布|(CVE-2024-45195)Apache OFBiz /viewdatafile 代码执行漏洞【已复现】

    漏洞名称:Apache OFBiz /viewdatafile 代码执行漏洞(CVE-2024-45195) English Name:Apache OFBiz /viewdatafile Code ...

  2. C# 调用WebService 笔记

    最近开发工作涉及到一些关于webService调用的问题,因为太久没有做过这部分,踩了一点坑,做个笔记记录一下,避免下次踩坑. 说明 C#调用webService基本有两种方法,一种是静态调用,也就是 ...

  3. JavaScript – 理解 Function, Object, Prototype, This, Class, Mixins

    前言 JavaScript (简称 JS) 有几个概念 Object, Prototype, This, Function, Class 是比较难理解的 (相对其它语言 C# / Java 而已),这 ...

  4. 选择:Qt Creator、Qt Designer、Qt Design Studio,三种开发工具,您选择哪一种?

    前言 本文介绍了三种QT开发工具的特点,以及各自的优点和缺点. QT三种工具对比 QT提供的工具 Qt Creator: 扮演的是QT Widgets和QT QML的IDE的角色. 优点: 可以编写C ...

  5. QT与JavaScript之QT6应用程序与JavaScript脚本集成开发:C++应用程序能与JavaScript实现相互调用吗?

    简介 QT6框架中提供了JavaScript引擎类型QJSEngine ,可用于实现 C++应用程序和JavaScript代码之间的相互调用. 目录 什么是 ECMAScript ? JavaScri ...

  6. 加入 Flutter Engage,Pick 您的专属 Dash 形象!

    Flutter Engage 活动精彩来袭 对 Flutter 团队的开发者们来说,交流的重要性不言而喻,和您一样,我们也希望开发者们能够在不同的情境下进行互动分享.于是我们为您准备了一场特别的线上活 ...

  7. android 代码如何增加atrace跟踪

    在 Android 代码中增加 Atrace 跟踪,可以使用 Android 提供的 android.os.Trace 类.这允许你在应用代码中手动添加自定义的跟踪点,以捕获特定代码段的执行情况.以下 ...

  8. 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊

    本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的安装配置.故障处理.性能优化等日常实践操作,以及常用脚本.注意事项等总结 ...

  9. markdown.css 设置文章的样式

    返回的详情文章内容是标签加内容文字,使用 markdown,css 渲染样式 : .markdown-body .octicon { display: inline-block; fill: curr ...

  10. 15. Vue 数据双向绑定原理

    在初始化 Vue 实例的时候,会遍历data中的数据,通过 Object.defineProperty 给数据添加 getter 和 setter 函数 ,获取数据触发 getter 函数 ,修改数据 ...