【bzoj4282】【慎二的随机数列】【dp】
来源:互联网 发布:c 网站源码 编辑:程序博客网 时间:2024/04/29 20:00
Description
间桐慎二是间桐家著名的废柴,有一天,他在学校随机了一组随机数列, 准
备使用他那强大的人工智能求出其最长上升子序列,但是天有不测风云,人有旦
夕祸福,柳洞一成路过时把间桐慎二的水杯打翻了……
现在给你一个长度为 n 的整数序列,其中有一些数已经模糊不清了,现在请
你任意确定这些整数的值,使得最长上升子序列最长(为何最长呢?因为间桐慎
二向来对自己的人品很有信心) 。
Input
第一行一个正整数 n。
接下来 n 行,第 i 行若为“K x” ,则表示第 i 个数可以辨认且这个数为 x;
若为“N” ,则表示第i 个数已经辨认不清了。
Output
第一行一个整数,表示最长的最长上升子序列长度。
Sample Input
4
K 1
N
K 2
K 3
K 1
N
K 2
K 3
Sample Output
3
HINT
对于100%的数据,n ≤ 100000,|x| ≤ 10^9
题解: 对于每个可以辨认的数,减去它之前不可辨认的数。构成一个新数列。这个新数列的lis加上不可辨认的数的个数就是答案啦。
代码:
#include<iostream>#include<cstdio>#define N 100010using namespace std;int q[N],sum,n,s[N],top,t,x;char ch[10];int main(){ scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%s",ch); if (ch[0]=='K'){scanf("%d",&x);q[++t]=x-sum;} if (ch[0]=='N') sum++; } s[0]=-999999999; for (int i=1;i<=t;i++) if (q[i]>s[top]) s[++top]=q[i]; else{ int l=1,r=top; while (l<=r){int mid=(l+r)>>1;if (q[i]>s[mid])l=mid+1;else r=mid-1;} s[l]=q[i]; } cout<<top+sum<<endl;}
0 0
- 【bzoj4282】【慎二的随机数列】【dp】
- BZOJ4282: 慎二的随机数列
- [bzoj4282]慎二的随机数列
- 【BZOJ4282】慎二的随机数列
- 【bzoj4282】慎二的随机数列
- 【BZOJ4282】慎二的随机数列(LIS)
- 4282: 慎二的随机数列 DP
- [DP LIS] BZOJ 4282 慎二的随机数列
- bzoj 4282: 慎二的随机数列
- 【BZOJ 4282】慎二的随机数列
- 【JZOJ 3693】 慎二的随机数列
- BZOJ 4282 慎二的随机数列 LIS
- BZOJ 4287(慎二的随机数列-构造+LIS)
- BZOJ 4282: 慎二的随机数列|动态规划
- 4282: 慎二的随机数列 最长不下降序列
- 【NOI2014模拟6.20】慎二的随机数列
- JZOJ 3693. 【NOI2014模拟6.20】慎二的随机数列
- 【JZOJ 3693】慎二的随机数列(seq)
- Linux大数据开发基础:第十节:Shell编程入门(二)
- 数据库——关系型数据库管理系统
- 【学习笔记javascript设计模式与开发实践(中介者模式)----14】
- Hibernate中编程式事物的简单使用
- 期望
- 【bzoj4282】【慎二的随机数列】【dp】
- unix同步——条件变量
- input子系统event数据解析
- Linux内核工程导论——网络:Netfilter概览
- 我理解的云计算与大数据
- JSON 的解析
- 通过HttpURLConnection模拟post表单提交
- 【学习笔记javascript设计模式与开发实践(装饰者模式)----15】
- oc语言 KVO观察者模式