Codeforces Round #701 (Div. 2) 题解
由于今天实在是太自闭了就前来写场已经 AK 的 div.2 的题解了
这场比赛是我的 div.2 首 AK 哦
A
先特判 \(b=1\),强制将 \(b+1\)
否则容易发现答案最大为 \(\log_ab\),所以直接枚举 \(b\) 加了多少次,枚举到 \(30\) 就行了。
B
考虑一个数组 \([a_1,a_2,\dots,a_n]\) 有多少个与其 \(k\)-similar 的数组。
对于 \(2\leq i\leq n-1\),如果我们替换 \(a_i\) 为 \(x\),那么必须有 \(a_{i-1}<x<a_{i+1}\) 且 \(x\neq a_i\),共有 \(a_{i+1}-a_{i-1}-2\) 种选择。
如果我们替换 \(a_1\) 为 \(x\),那么必须有 \(1\leq x<a_2\) 且 \(x\neq a_1\),有 \(a_2-2\) 种选择,替换 \(a_n\) 也同理。
故答案为 \(a_{l+1}-2+k-1-a_{r-1}+\sum\limits_{i=l+1}^{r-1}a_{i+1}-a_{i-1}-2\),前缀和维护一下即可。
注意特判 \(l=r\)。
C
现场降智了写了个整除分块。。。
设 \(r=a\bmod b\),注意到 \(a=br+r=(b+1)r\leq x\),而 \(b>r\),故 \(r(r+1)<x\)。
考虑直接枚举 \(r\),那么我们就要统计 \(r<b\leq y\) 且 \((b+1)r\leq x\) 的 \(b\) 有多少个。显然为 \(\max(0,\min(y,\lfloor\dfrac{x}{r}\rfloor-1)-c)\)
D
这题 tm 竟然卡了我 40min
暴力显然是不行的,不过我们发现一个性质,那就是 \(1\sim 16\) 的 LCM 为 \(720720\),并且 \(16^4<720720<10^6\)
于是考虑黑白染色,白色格子填 \(720720\),黑色格子填 \(720720-x^4\),这样就符合题目的条件了。
E
首先注意到红色棋子移动的路线一定是从根节点开始,向下移动一段距离到达某个点 \(x_1\),然后跳到同一深度的某一点 \(y_1\),然后再向下移动一段距离到达某个点 \(x_2\),然后再跳到某个 \(y_2\),以此类推直到到达叶子节点。
于是考虑 \(dp\),我们设 \(dp_i\) 表示红色棋子走到 \(i\) 处的答案的最大值。
但发现这样不好表示当前深度是否进行了交换,于是考虑换个状态,\(dp1_i\) 表示红色棋子位于 \(i\),并且在当前深度没有进行交换的最大值,\(dp2_i\) 表示红色棋子位于 \(i\),并且在当前深度已经进行了交换的最大值。
状态转移方程:
\(dp1_i=\max(dp1_{fa_i}+mxv_{fa_i},dp2_i)\)
\(dp2_i=\max\limits_{j\ \text{与}\ i\ \text{在同一深度}}dp1_j+|a_j-a_i|\)
一看就懂。
其中 \(mxv_i\) 表示在与 \(i\) 同一深度的点 \(j\) 中 \(|a_j-a_i|\) 的最大值,显然 \(j\) 要么是与 \(i\) 同一深度中的点中权值最大的,要么是与 \(i\) 同一深度的点中权值最小的。
但是朴素地计算 \(dp2_i\) 最坏可达 \(n^2\)。不过注意到当 \(a_j<a_i\) 时的贡献为 \(dp1_j+a_i-a_j\),\(a_j>a_i\) 时的贡献为 \(dp1_j+a_j-a_i\),于是我们考虑将每一深度的点的权值从小到大排序,然后从小到大、从大到小各扫一遍并实时分别维护 \(dp1_j-a_j\),\(dp1_j+a_j\) 的最大值,这样转移复杂度就讲到 \(n\log n\) 了。
F
一道水水的 F。
首先求一遍 \(b\) 数组的前缀和 \(s_i\)
考虑一个 naive 的 dp 状态,\(dp_{i,j}\) 表示填了前 \(i\) 个位置,上一个 \(a_j\neq b_j\) 的位置为 \(j\)。
那么有转移方程式:
\(\begin{cases}dp_{i,j}\rightarrow dp_{i+1,j}\\dp_{i,j}\times[b_{i+1}-(s_i-s_{j-1})\neq b_{i+1}]\rightarrow dp_{i+1,i+1}\end{cases}\)
考虑将两维压成一维,设 \(f_i=\sum dp_{i,j}\),那么 \(f_i=\sum\limits_{j=0}^{i-1}f_j\times[(s_{i-1}-s_{j-1})\neq 0\),于是再实时维护一个 \(t_x=\sum\limits_{s_{i-1}=x}f_i\) 就可以行了。这个可以用 std::map 实现,复杂度线对
Codeforces Round #701 (Div. 2) 题解的更多相关文章
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- Codeforces Round #525 (Div. 2)题解
Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...
- Codeforces Round #160 (Div. 1) 题解【ABCD】
Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...
- Codeforces Round #383 (Div. 2) 题解【ABCDE】
Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...
随机推荐
- 第五课第四周实验一:Embedding_plus_Positional_encoding 嵌入向量加入位置编码
目录 变压器预处理 包 1 - 位置编码 1.1 - 位置编码可视化 1.2 - 比较位置编码 1.2.1 - 相关性 1.2.2 - 欧几里得距离 2 - 语义嵌入 2.1 - 加载预训练嵌入 2. ...
- UltraSoft - Beta - Scrum Meeting 3
20200519会议纪要 Date: May 19th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 暂无 Liuzh 前端 暂无 Kkkk 前端 完成了前端 ...
- 2021.8.17考试总结[NOIP42]
$\huge{取模不能比大小!}$ $\huge{取模不能比大小!}$ $\huge{取模不能比大小!}$ 有了打地鼠的前车之鉴,我深信树规板子是可以出现在联赛题里的. 所以T1十分钟码完直接溜了,后 ...
- stm32f103系列引脚定义-功能图
器件功能和配置(STM32F103xx增强型) STM32F103xx增强型模块框架图 STM32F103xx增强型VFQFPN36管脚图 STM32F103xx增强型LQFP100管脚图 STM32 ...
- 攻防世界 杂项15.János-the-Ripper
下载附件并解压,我用的是WinHex打开,发现是PK开头,并且文件中包含一个flag.txt文件,应该就是我们所需要的flag. 把下载的附件改后缀为.zip,确实有我们需要的flag,打开后需要密码 ...
- 正则表达式之grep
grep 的五个参数,基本的常用的: -a :将 binary 档案以 text 档案的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺 ...
- SQL*Loader-704: Internal error: ulconnect: OCIServerAttach [0] ORA-12541: TNS:no listener
使用/app/oracle/product/11.2.0/bin/sqlldr导入数据报错: 监听没有开启?检查发现监正常 猜测是监听端口不是默认的1521有关系,直接在sid里面加上数据库服务器的i ...
- Redis网络库源码分析(1)之介绍篇
一.前言 Redis网络库是一个单线程EPOLL模型的网络库,和Memcached使用的libevent相比,它没有那么庞大,代码一共2000多行,因此比较容易分析.其实网上已经有非常多有关这个网络库 ...
- vue监听器watch & 计算属性computed
侦听器watch vue中watch是用来监听vue实例中的数据变化 watch监听时有几个属性: handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数 deep:其值true 或者 ...
- linux下安装Git并生成SSH key
系统:contens7.4 1.下载源码解压 wget https://github.com/git/git/archive/v2.3.0.zip unzip v2.3.0.zip cd git-2. ...