博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
dp学习笔记1
阅读量:7065 次
发布时间:2019-06-28

本文共 1494 字,大约阅读时间需要 4 分钟。

其实dp之前早就做过了,感觉有点遗忘,拿来复习复习。

View Code
1 /* 2 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。 3 但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 4 某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 5 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数), 6 计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。 7 */ 8 /* 9 分析:10 最多能拦截多少导弹,相当于求最大非上升子序列的长度11 最少要配备多少套这种导弹拦截系统,相当于求最长上升序列的长度12 */13 //dp[i]表示前i个导弹中导弹i最多能拦截到的导弹的个数,则有dp[i]=max(dp[j])+1(其中h[i]<=h[j]&&0<=j
22 #include
23 #include
24 const int inf=1e9;25 using namespace std;26 int h[100];27 int dp1[100];//保留最长非上升子序列28 int dp2[100];//最长递增子序列29 30 int main(){31 int n;32 while(~scanf("%d",&n)){33 for(int i=1;i<=n;i++){34 scanf("%d",&h[i]);35 }36 memset(dp1,0,sizeof(dp1));37 memset(dp2,0,sizeof(dp2));38 int umax=0,dmax=0;39 //求最长非上升子序列40 for(int i=1;i<=n;i++){41 int ans=0;42 for(int j=0;j
ans){45 ans=dp1[j];46 }47 }48 dp1[i]=ans+1;//加上自己本身49 dmax=max(dmax,dp1[i]);50 }51 //求最长上升子序列52 for(int i=1;i<=n;i++){53 int ans=0;54 for(int j=0;j
h[j]&&dp2[j]>ans){56 ans=dp2[j];57 }58 }59 dp2[i]=ans+1;60 umax=max(dp2[i],umax);61 }62 printf("%d %d\n",dmax,umax);63 }64 return 0;65 }

 

转载地址:http://yhtll.baihongyu.com/

你可能感兴趣的文章
winform 控件部分
查看>>
BZOJ1066 蜥蜴
查看>>
Java的接口总结
查看>>
【原创】MySQL新旧版本ORDER BY 处理方法
查看>>
6421B Lab10 网络文件和打印服务的配置与故障排除
查看>>
一步步学WebSocket(3)WebSocket协议格式
查看>>
crontab中执行多条命令
查看>>
25 JavaScript的幻灯片用于在Web布局的精彩案例
查看>>
每日英语:Chinese Writer Wins Literature Nobel
查看>>
java中三种主流数据库数据库(sqlserver,db2,oracle)的jdbc连接总结
查看>>
css颜色代码大全:(网页设计师和平面设计师常用)
查看>>
oracle的nvl和sql server的isnull
查看>>
数字转换为壹仟贰佰叁拾肆的Java方法
查看>>
ocp 1Z0-051 23-70题解析
查看>>
还没被玩坏的robobrowser(5)——Beautiful Soup的过滤器
查看>>
mysql 加入列,改动列,删除列。
查看>>
x265探索与研究(六):main()函数
查看>>
UITableView分页
查看>>
跟我一起数据挖掘(13)——矩阵分解
查看>>
CAShapeLayer(持续更新)
查看>>