DP CF 319 div1B
http://codeforces.com/contest/319/problem/B
题目大意:
有删除操作,每次都删除数组右边比自己小的、且紧挨着自己的数字。问最小需要删除几次。
思路:
我们定义dp[i]表示删除右边的所有元素需要几次,然后用deque或者stack维护(最小的在顶端),从右边开始逆推(这样就保证了stack或deque中的数字在序列中的大小),然后在pop的同时要注意比较t和dp[j]的大小就可以了。
#include<bits/stdc++.h> using namespace std; const int maxn = + ;
int a[maxn];
int dp[maxn];
int n; void solve(){
memset(dp, , sizeof(dp));
stack <pair<int, int> > s;
s.push(make_pair(n - , a[n - ])); for (int i = n - ; i >= ; i--){
int t = ;
pair <int, int> p;
while (!s.empty() && s.top().second < a[i]){
p = s.top();
t = max(dp[p.first], t + );
s.pop();
}
s.push(make_pair(i, a[i]));
dp[i] = t;
}
int cnt = ;
for (int i = ; i < n; i++) cnt = max(cnt, dp[i]);
cout << cnt << endl;
} int main(){
while (scanf("%d", &n) == ){
for (int i = ; i < n; i++) scanf("%d", a + i);
solve();
}
return ;
}
DP CF 319 div1B的更多相关文章
- 【DP】:CF #319 (Div. 2) B. Modulo Sum
[题目链接]:http://codeforces.com/contest/577/problem/B [相似题目]:http://swjtuoj.cn/problem/2383/ [题意]:给出n个数 ...
- 数位DP CF 55D Beautiful numbers
题目链接 题意:定义"beautiful number"为一个数n能整除所有数位上非0的数字 分析:即n是数位所有数字的最小公倍数的倍数.LCM(1到9)=2520.n满足是252 ...
- dp cf 1700 最近几天的刷题
C. Number of Ways 这个题目的意思是,把这个n的序列分成三个连续的部分,要求这三个部分的和是一样的.问这种划分的方法有多少种. 这个题目和之前写过的数字划分有点像,这个就是要先进行前缀 ...
- dp cf 20190615
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...
- dp cf 20190614
C. Hard problem 这个题目一开始看还感觉比较复杂,但是还是可以写,因为这个决策很简单就是对于这个字符串倒置还是不倒置. 然后我不会一维去转移,直接用二维,第二维用01来表示转移和不转移, ...
- dp cf 20190613
A. Boredom 这个题目不难,但是我做的还比较复杂,不过还是很开心,至少做出来了,开始因为爆int了还wa了一发,搞得我以为自己做错了 #include <cstdio> #incl ...
- CF #319 div 2 E
在一个边长为10^6正方形中,可以把它x轴分段,分成1000段.奇数的时候由底往上扫描,偶数的时候由上往下扫描.估计一下这个最长的长度,首先,我们知道有10^6个点,则y邮方向最多移动10^3*10^ ...
- CF #319 div 2 D
这道题算不算脑洞题.. 可以发现,当一个排列中有循环节时长度为1或2时可能有解.当为1时,只需把全部点都连到这个题即可,当为2时,就要求所有循环节长度均为偶数,这很容易理解,因为如果存在为奇数,它们之 ...
- 数位dp入门 HDU 2089 HDU 3555
最基本的一类数位dp题,题目大意一般是在a~b的范围,满足某些要求的数字有多少个,而这些要求一般都是要包含或者不包含某些数字,或者一些带着数字性质的要求,一般来说暴力是可以解决这一类问题,可是当范围非 ...
随机推荐
- JavaScript JSON timer(计时器) AJAX HTTP请求 同源策略 跨域请求
JSON 介绍 1. JSON: JavaScript Object Notation 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是 ...
- json处理三部曲之第一曲:利用json-lib-xxx.jar处理json
json-lib-xxx.jar包必需5个依赖包(实测): ezmorph-xxx.jar commons-lang-xxx.jar commons-beanutils-xxx.jar commons ...
- POJ 1258 Agri-Net(Prim)
( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...
- LeetCode OJ 217.Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- Centos7下安装pip
Linux 通过 pip 安装使用 Shadowsocks - CentOS 7 (06) Pip是安装Python包的工具,提供了安装.列举已安装包.升级以及卸载包的功能.Pip 是对easy_in ...
- psql 命令总结
1 登录数据库 Connection options: -h, --host=HOSTNAME database server host or socket directory (default: & ...
- ueditor浏览器 无法上传文件.问题
dll也都引用了 路径绝对tmd没问题 最后 我一点一点的调试发现了问题 草tmd百度程序员 */UE.ajax = function() { //创建一个ajaxRequest对象 var fnSt ...
- 在调试安卓系统的时候需要这个 ”adb disable-verity“
在调试设备的时候.想要对文件进行读写 于是使用adb remount 出现提示. 请使用 ”adb disable-verity“ 于是使用adb disable-verity 的命令. 得到如下 ...
- springMVC中ajax的运用于注意事项
ajax的运用: 注意事项: dataType:"json"在ajax中可写可不写(ajax能够自动识别返回值类型),写了更加规范,可以在ajax识别错误返回值类型的时候,指定返回 ...
- Win32串口API
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...