【BZOJ4282】慎二的随机数列(LIS)
2017-10-09 07:29
495 查看
4282: 慎二的随机数列
Time Limit: 10 Sec Memory Limit:256 MB
Submit: 254 Solved: 155
[Submit][Status][Discuss]
Description
间桐慎二是间桐家著名的废柴,有一天,他在学校随机了一组随机数列, 准备使用他那强大的人工智能求出其最长上升子序列,但是天有不测风云,人有旦
夕祸福,柳洞一成路过时把间桐慎二的水杯打翻了……
现在给你一个长度为 n 的整数序列,其中有一些数已经模糊不清了,现在请
你任意确定这些整数的值,使得最长上升子序列最长(为何最长呢?因为间桐慎
二向来对自己的人品很有信心) 。
Input
第一行一个正整数 n。接下来 n 行,第 i 行若为“K x” ,则表示第 i 个数可以辨认且这个数为 x;
若为“N” ,则表示第i 个数已经辨认不清了。
Output
第一行一个整数,表示最长的最长上升子序列长度。Sample Input
4K 1
N
K 2
K 3
Sample Output
3HINT
对于100%的数据,n ≤ 100000,|x| ≤ 10^9Source
[Submit][Status][Discuss]
[align=left]----------------------------------------------------------------------------------------------------------------------------------------------------------------[/align]
[align=left]
[/align]
[align=left]正确解法:[/align]
[align=left]把每一个数都减去他前面的看不清的数的个数,去掉所有看不清的数,求LIS,结果加上看不清的数的个数。[/align]
[align=left]
[/align]
[align=left]原因:[/align]
[align=left]如果已经有了一个LIS,它中间跨了一些看不清的数,那么选上这些看不清的数,或用看不清的数代替确定的数,结果不会更差,所以答案的LIS一定包括了所有的看不清的数。而每个数减去它前面看不清数的个数,实际上是减去了前不清的数能占用的空间,比如一个数列是 1,?,3,那么最优结果是1,2,3,而如果原数列是1,?,2,那么最优结果是1,2,不会把结果算多。[/align]
[align=left]
[/align]
[align=left]注意有负数,一开始我快速读入是WA了。[/align]
[align=left]
[/align]
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; inline void getint(int &x){ x=0; char c=getchar(); int res=1; while(!(c>='0'&&c<='9')){ c=getchar(); if(c=='-') res=-1; } while(c>='0'&&c<='9') x=x*10+c-'0', c=getchar(); x*=res; } const int N=100010; int n, tot, x, ans; int g ; char s[5]; int main(){ scanf("%d",&n); memset(g,127,sizeof(g)); for(int i=1, t; i<=n; ++i){ scanf("%s",s); if(s[0]=='N') tot++; if(s[0]=='K'){ getint(x); x-=tot; t = lower_bound(g+1,g+n+1,x)-g; ans = max(ans, t); g[t] = x; } } printf("%d\n",ans+tot); return 0; }
[align=left]
[/align]
相关文章推荐
- BZOJ 4282 慎二的随机数列 LIS
- [bzoj4282]慎二的随机数列
- 【bzoj4282】慎二的随机数列
- BZOJ 4287(慎二的随机数列-构造+LIS)
- BZOJ4282 : 慎二的随机数列
- [BZOJ5427]最长上升子序列/[BZOJ4282]慎二的随机数列
- 【bzoj4282】慎二的随机数列
- 【bzoj4282】【慎二的随机数列】【dp】
- [bzoj4282]慎二的随机数列_动态规划_贪心
- 【BZOJ4282】慎二的随机数列 乱搞
- BZOJ4282: 慎二的随机数列
- BZOJ 4282 慎二的随机数列 动态规划
- bzoj 4282: 慎二的随机数列
- bzoj 4282: 慎二的随机数列 最长不下降序列
- BZOJ 4282: 慎二的随机数列|动态规划
- 4282: 慎二的随机数列 DP
- [DP LIS] BZOJ 4282 慎二的随机数列
- [扫描线 树状数组 随机数列 优化] BZOJ 2221 [Jsoi2009]面试的考验
- 【JZOJ 3693】慎二的随机数列(seq)
- 【BZOJ 4282】慎二的随机数列