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 题解 直接 ...
随机推荐
- Unity——EasyTouch摇杆插件使用
EasyTouch摇杆插件使用 Demo展示 双指缩放在电脑端无法掩饰,竖屏将就看看吧: 插件名叫EasyTouch,有需要给我留言,不想开仓库传了: 创建摇杆点这里: 初始化 On_Joystick ...
- CentOS 文本编辑器
目录 1.Nano 1.1.基础命令 1.2.快捷操作 1.3.配置文件 2.Vim 2.1.四大模式 2.2.基础命令 2.3.标准操作 2.4.高级操作 2.5.配置文件 Linux 终端的文本编 ...
- [no_code][Beta]测试报告
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 2020春季计算机学院软件工程(罗杰 任健) 作业要求 测试报告 我们在这个课程的目标是 设计出一个OCR表单处理软件 这个作业在哪个具体方面 ...
- [对对子队]会议记录5.27(Scrum Meeting12)
今天已完成的工作 朱俊豪 工作内容:寻找电池模型和BGM,修改关卡选择场景 相关issue:优化初步导出版本 相关签入:perf:地图界面优化 feat:更新系列资源(星星,大电池) 何瑞 ...
- 关于下载pyton第三方库的细节
1.下载Python第三方库有时候国外的网站网速很不好,需要选择国内的镜像网站去下载 阿里云 http://mirrors.aliyun.com/pypi/simple 中国科技大学 https: ...
- 21.6.25 test
\(NOI\) 模拟赛 \(T1\) 是树+位运算+dp+优化 打了 \(O(n^2)\) 的暴力dp,只拿到了35分,算了一下参赛的,人均65,中位数60.也能看出一些问题,对于一些模糊的猜测应该尝 ...
- 洛谷 P3147 [USACO16OPEN]262144 P
链接: P3147 P3146双倍经验 前言: 今天发现的一道很有意思的DP题 分析: 第一眼以为是区间DP,于是设f[i][j]为从第i个数到第j个数可以合出的最大值,但思考后发现并不能简单合并,并 ...
- 助你上手Vue3全家桶之Vue-Router4教程
目录 1,前言 1,Router 2.1,跳转 2.2,打开新页面 3,Route 4,守卫 4.1,onBeforeRouteLeave 4.2,onBeforeRouteUpdate 4.3,路由 ...
- MVC中单选按钮的实现
-------------控制器-------------- ViewBag.Kinds = SYS_Category.List(xxxxxxxxxxxxxxxxxxxxxxx); --------- ...
- python中的itertools模块简单使用
itertools 高效循环下创建循环器的标准库 Infinite itertools,无限迭代器 itertools.count(start=0, step=10) 默认返回一个从0开始,依次+10 ...