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. 原生JavaScript实现一个简单的Promise构造函数示例

    下面demo示例,只支持实例的then和catch,代码如下: function PromiseDiffer(fn){ var self = this; this.status = 'pendding ...

  2. JS之Math.sin与Math.cos介绍及应用-实现鼠标点击后的烟花效果

    基本介绍 Math.sin(x) :x 的正玄值.返回值在 -1.0 到 1.0 之间: Math.cos(x) :x 的余弦值.返回的是 -1.0 到 1.0 之间的数: 其中函数中是x是指&quo ...

  3. UC_Center整合单点登录后远程注册不激活问题的解决办法

    修改:bbs目录\uc_server\model\user.php 下方法add_user 如下: function add_user($username, $password, $email, $u ...

  4. C++ STL(标准模版库)—— vector 与 迭代器

    STL 基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称. STL 从广义上讲分为三类:algorithm(算法).containe ...

  5. USB编码方式(NRZI)及时钟同步方式

    1.概述 在同步通讯系统中,两个设备通讯则需要同步信号,同步信号分为时钟同步信号和自同步信号两种,时钟同步方式在通讯链路上具有时钟信号(IIC.SPI),自同步方式在通讯链路中没有同步信号(PCIE. ...

  6. /proc/pids/maps

    本实例中的用户空间地址从 0x00000000 到 0x80000000,从地址空间划分可知,从低到高依次是: 可执行文件的代码段.数据段.BSS段. 堆heap. 文件映射和匿名映射,包括vdso. ...

  7. 2024年2月中国数据库排行榜:PolarDB夺魁首登顶,TiDB攀升回探花

    银装素裹覆大地,春意初醒待来临.2024年2月墨天轮中国数据库流行度榜单出炉,表现最亮眼的无疑是PolarDB,其自23年7月以来一路高歌猛进,此次更是一举夺魁,彰显了云原生数据库的蓬勃发展态势,Oc ...

  8. Linux 系统常见 的命令

    uname -a 查看linux 的版本信息 : pwd :打印当前的工作目录 ,print work directory: cd  改变目录 ,change directory : cd . 当前目 ...

  9. Vnode 是什么 ,什么是虚拟DOM ?

    Vnode 是 JavaScript 对象,就是把标签结构的信息描述成js对象 : Vnode 的作用:通过 render 函数 将 template 描述成 Vnode ,然后通过一系列操作转换真实 ...

  10. Android复习(二)应用资源——>更多类型

    更多资源类型 本页面定义了更多类型的可具体化的资源,包括: Bool 带有布尔值的 XML 资源. 颜色 带有颜色值(十六进制颜色)的 XML 资源. 尺寸 带有尺寸值(包含度量单位)的 XML 资源 ...