SSL2797 2017年10月27日提高组 数列(dp)
来源:互联网 发布:c语言base64解码 编辑:程序博客网 时间:2024/05/16 14:47
2017年10月27日提高组 数列
Description
虽然msh长大了,但她还是很喜欢找点游戏自娱自乐。有一天,她在纸上写了一串数字:1,1,2,5,4。接着她擦掉了一个1,结果发现剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位。她希望擦掉某些数后,剩下的数列中在自己位置上的数尽量多。她发现这个游戏很好玩,于是开始乐此不疲地玩起来……不过她不能确定最多能有多少个数在自己的位置上,所以找到你,请你帮忙计算一下!
Input
第一行为一个数n,表示数列的长度。
接下来一行为n个用空格隔开的正整数,第i行表示数Ai。
Output
一行一个整数,表示擦掉某些数后,最后剩下的数列中最多能有多少个数在自己的位置上,即Ai=i最多能有多少。
分析:dp显然,设f[i][j]为前i个数删了j个的最大值,
f[i][j]=f[i-1][j]+1 (a[i]==i-j)
f[i][j]=max(f[i][j],f[i-1][j],f[i-1,j-1])
代码
#include <cstdio>#define maxn 2000using namespace std;int f[maxn][maxn],a[maxn],n;int max(int x,int y){ return x>y?x:y;}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",&a[i]); for (int i=1;i<=n;i++) for (int j=0;j<i;j++) { if (a[i]==i-j) f[i][j]=f[i-1][j]+1; f[i][j]=max(max(f[i][j],f[i-1][j-1]),f[i-1][j]); } int ans=0; for (int i=0;i<=n;i++) ans=max(ans,f[n][i]); printf("%d",ans);}
阅读全文
0 0
- SSL2797 2017年10月27日提高组 数列(dp)
- SSL2798 2017年10月27日提高组 软件开发(二分+dp)
- SSL2759 2017年10月6日提高组T2 挖矿(dp)
- SSL2764 2017年10月8日提高组T1 didi(dp)
- SSL2777 2017年10月21日提高组 偷懒的西西(二分+dp)
- SSL2792 2017年10月25日提高组T2 数字问题(数位dp)
- SSl2794 2017年10月26日提高组T2 Dark(dp)
- 【SSLGZ 2794】2017年10月26日提高组T2 Dark(dp)
- SSL2812 2017年10月30日提高组T2 凤凰院凶真(dp,LCIS)
- SSL2811 2017年10月30日提高组T2 摘Galo(树形dp)
- SSL2803 2017年10月28日提高组 sum(dp)
- SSL2671 2017年8月8日提高组T2 呀!回文串(dp)
- SSL2674 2017年8月9日提高组T2 覆盖(dp)
- SSL2689 2017年8月14日提高组T3 染色(树形dp)
- SSL2831 2017年11月3日提高组T1 跃动(dp)
- SSL2833 2017年11月3日提高组T1 Alice的疑问(数位dp)
- SSL2839 2017年11月6日提高组T1 游戏(dp)
- SSL2841 2017年11月7日提高组T2 好路线(dp)
- Intel发布Xeon Phi系列新品,68核272线程
- 李开复:美国将在 AI 大战中落于中国之后
- 龙芯下一代CPU 3A4000爆料,龙芯要做独立于Wintel、AA体系的第三极?
- Detail-revealing Deep Video Super-resolution 论文笔记
- PHP 简单计票程序(作业)
- SSL2797 2017年10月27日提高组 数列(dp)
- mysql 远程权限 root密码
- hdu 5131 Song Jiang's rank list(排序)
- java.math.BigDecimal cannot be cast to java.lang.String
- 马斯克首次公开谈及“超级隧道”,有三种方法解决成本问题
- GMIC北京2017全球金融创新峰会开幕 FinTech驱动全新金融生态构建
- 中国X86 CPU同主频能超越AMD? | 揭秘
- 微信支付进军美国,可直接用人民币结算
- Lumia手机官网全线下架,微软手机皮之不存毛将焉附