「codeforces - 1674F」Madoka and Laziness
如果做过 codeforces - 1144G 那这题最多 *2200。
序列中的最大值必然为其中一个拐点,不妨设 \(a_p = a_\max\),先讨论另一个拐点 \(i\) 在 \(p\) 左侧的情况。于是问题转化为规划 \([1, i)\),\((i, p)\),\((p, n]\) 几个区间中的数给 \(i\) 还是给 \(p\)。
对于 \([1, i)\),令 \(dp[i]\) 表示将 \([1, i]\) 分为两个 strictly increasing subsequence,其中不以 \(i\) 结尾的 subsequence 的结尾元素的最小值,分讨转移即可。
对于 \((i, p)\),同 codeforces - 1144G,which is 这题唯一的难点。
对于 \((p, n]\),同情况 1。
不太会写代码,,,参考了下 editorial,,,
#include <bits/stdc++.h>
#define cm(x, y) x = min(x, y)
#define cm2(x, y) x = max(x, y)
using namespace std;
int n, a[500100], pos, dp[500100], dp2[500100], dp3[500100][2];
int solve() {
pos = n;
for (int i=0; i<n; ++i) {
if (a[i] > a[pos]) {
pos = i;
}
}
dp[0] = -1;
for (int i=1; i<=pos; ++i) {
dp[i] = 1e9;
if (a[i] > dp[i-1]) {
cm(dp[i], a[i-1]);
}
if (a[i] > a[i-1]) {
cm(dp[i], dp[i-1]);
}
}
dp2[n-1] = -1;
for (int i = n-2; i>=pos; --i) {
dp2[i] = 1e9;
if (a[i] > dp2[i+1]) {
cm(dp2[i], a[i+1]);
}
if (a[i] > a[i+1]) {
cm(dp2[i], dp2[i+1]);
}
}
int res = 0;
dp3[pos][0] = dp[pos];
for (int i=pos+1; i<n; ++i) {
dp3[i][0] = 1e9;
dp3[i][1] = -1e9;
if (a[i-1] > a[i]) {
cm(dp3[i][0], dp3[i-1][0]);
}
if (dp3[i-1][1] > a[i]) {
cm(dp3[i][0], a[i-1]);
}
if (a[i-1] < a[i]) {
cm2(dp3[i][1], dp3[i-1][1]);
}
if (dp3[i-1][0] < a[i]) {
cm2(dp3[i][1], a[i-1]);
}
res += dp3[i][1] > dp2[i];
}
return res;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (int i=0; i<n; ++i) {
cin >> a[i];
}
int ret = solve();
reverse(a, a+n);
cout << ret+solve() << "\n";
}
「codeforces - 1674F」Madoka and Laziness的更多相关文章
- 「CodeForces 581D」Three Logos
BUPT 2017 Summer Training (for 16) #3A 题意 给你三个矩形,需要不重叠不留空地组成一个正方形.不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形 ...
- 「CodeForces - 50C 」Happy Farm 5 (几何)
BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...
- 「CodeForces - 598B」Queries on a String
BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插 ...
- 「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...
- 「CodeForces 476A」Dreamoon and Stairs
Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...
- 「CodeForces 546B」Soldier and Badges 解题报告
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...
- 「Codeforces 79D」Password
Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个 ...
- 「Codeforces 468C」Hack it!
Description 定义 \(f(x)\) 表示 \(x\) 的各个数位之和.现在要求 \(\sum_{i=l}^rf(i)\bmod a\). 显然 ans=solve(l,r)%a; if(a ...
- 「Codeforces 724F」Uniformly Branched Trees
题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...
- 「codeforces - 1284G」Seollal
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...
随机推荐
- Java中的三元运算,以后用得到!
前言 Java 中的三元运算,平时也叫做三目运算,大家了解吗?下面就详细介绍一下,以后在项目编程中用得到. 一.Java运算符 在最底层,Java 中的数据是通过使用运算符来操作的.运算符是一种特殊的 ...
- Transformer算法的应用
目录 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍 2.3. 相关技术比较 3. 实现步骤与流程 3.1. 准备工作:环境配置与依赖安装 3.2. 核心模块实现 4 ...
- Python潮流周刊#10:Twitter 的强敌 Threads 是用 Python 开发的!
你好,我是猫哥.这里每周分享优质的 Python 及通用技术内容,大部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 首发于我的博客:https://pyth ...
- Day11_Java_作业
1:递归那个兔子对数练习题 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?(使用递归去解决) 2:定义一个数组 ...
- 2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?
2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同? 答案2023-07-14: 在Kafka中,文件的布局采用了Topic/Partition的方式,每个分区对应一个物理文件夹 ...
- Unsupervised Learning of Depth and Ego-Motion from Video(CVPR2017)论文阅读
深度估计问题 从输入的单目或双目图像,计算图像物体与摄像头之间距离(输出距离图),双目的距离估计应该是比较成熟和完善,但往单目上考虑主要还是成本的问题,所以做好单目的深度估计有一定的意义.单目的意思是 ...
- uni-app学习之路
MVC模式1. model:模型层,数据的增删改查2. view:视图层,前端页面3. controller:控制层,处理业务 文件页面结构1. 页面以`.vue`结尾2. `template`,`s ...
- [golang]使用logrus自定义日志模块
简介 logrus是一个第三方日志库,性能虽不如zap和zerolog,但方便易用灵活.logrus完全兼容标准的log库,还支持文本.JSON两种日志输出格式. 特点 相较于标准库,logrus有更 ...
- 【go笔记】简单的http服务
前言 Go语言通过内置的标准库net/http可以非常方便地实现web服务.不借助任何框架,单凭标准库,50行代码内即可实现简单的web服务. http的ListenAndServe()函数原型: f ...
- .NET 8 发布的最后一个预览版Preview 7, 下个月发布RC
微软在2023年8月9日 发布了.NET 8 Preview 7[1],这是它在11月14日 RTM 之前进入发布候选阶段之前的最后预览版. 该预览版也于也与 VS 2022 v17.7 版本一起发布 ...