【题解】NOIP普及组 洛谷P1020 导弹拦截
2017-07-08 13:14
246 查看
NOIP普及组 导弹拦截
NOIP普及组 导弹拦截考点
题意
思路
代码
考点
贪心DP
题意
洛谷链接有一些排列好的数,求其最长不上升子序列的长度和最少的最长不上升子序列个数
思路
第一小问一看题目,WOC最长不上升子序列!拍定DP打打打第二小问一开始想用DP来着,但是发扬NOIP精神——数据这么小?直接枚举即可,但是有一些方案如何拍板?可以知道如果你可以打这个导弹而且你是高度最低的那一个,你直接打他,不然就没机会了!
代码
#include<iostream> #include<cstdio> using namespace std; int a[101],cnt; int dp[101]; int ans; int sy[101]; int main() { for(int i=1;i<=100;++i) dp[i]=1; dp[1]=1; cnt=1; while(cin>>a[cnt]) ++cnt; cnt--; for(int i=1;i<cnt;++i) { for(int j=i+1;j<=cnt;++j) { if(a[i]>a[j]) { dp[j]=max(dp[i]+1,dp[j]); } } } for(int i=1;i<=cnt;++i) ans=max(ans,dp[i]); printf("%d\n",ans); int tot=1; int cun,shortest; sy[1]=a[1]; for(int i=2;i<=cnt;++i) { shortest=99999; cun=-1; for(int j=1;j<=tot;++j) { if(sy[j]>a[i]) { if(sy[j]<shortest) { shortest=sy[j]; cun=j; } } } if(cun==-1) { sy[++tot]=a[i]; } else { sy[cun]=a[i]; } } printf("%d\n",tot); }
这道题还是有点难度的,算是一道好题了吧(但是思路一定就超级简单了)
相关文章推荐
- NOIP2010第一道 ---导弹拦截(摘自洛谷题解)
- 洛谷 P1069 [NOIP2009普及组 T3] 细胞分裂
- [NOIP 2014普及T4] 子矩阵题解
- [NOIP2015提高&洛谷P2678]跳石头 题解(二分答案)
- NOIP2016普及组复赛第一题的ACC程序加题解pascal
- 洛谷P2672 NOIP2015普及组第四题
- 洛谷 P1983 [NOIP2013普及组 T4] 车站分级
- noip2013题解 普及组
- NOIP2013普及组 题解
- 2017.03.25【NOIP 普及组】模拟赛C组 步行(walk) 题解
- NOIP-2016-普及-题解
- 【题解】洛谷 P1179数字统计 NOIPpj 数字统计
- LUOGU P3954题解(NOIP 2017普及组第一题)
- NOIP2011 普及组 T3 洛谷P1309 瑞士轮
- NOIP2016 普及组第四题 魔法阵magic 题解
- NOIP-2016-普及组 复赛题解
- NOIP2010普及组-导弹拦截
- NOIP2010第二题 ---数字统计(摘自洛谷题解)
- 求全排列的数学方法(洛谷1088 火星人noip2004普及组第4题)
- NOIP2016普及组 第四题 题解