HDU 1257(动态规划?贪心)
来源:互联网 发布:csdn 算法岗面试 编辑:程序博客网 时间:2024/06/05 14:17
问题描述:
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.
Input
输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output
对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.
Sample Input
8 389 207 155 300 299 170 158 65Sample Output
2
题目分析:我的最初想法是LIS 每次去找到最长的LIS然后除去,直到数组为空!后来看了kuangbin的博客,迷茫了!他说得也很对!
有必要问问知乎了 哈哈!
点击打开链接
代码如下:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;const int maxn=1e5+100;int dp[maxn],a[maxn];int main(){ int n; while (scanf("%d",&n)!=EOF) { for (int i=0;i<n;i++) scanf("%d",&a[i]); int ans=0; memset (dp,0,sizeof (dp)); for (int i=0;i<n;i++) { bool flag=false; int Min=maxn,cur=0; for (int j=0;j<ans;j++) { if (dp[j]>a[i]&&(Min-a[i])>(dp[j]-a[i])) { Min=dp[j]; cur=j; flag=true; } } if (!flag) { dp[ans++]=a[i]; } else { dp[cur]=a[i]; } } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- HDU 1257(动态规划?贪心)
- HDU 1257(贪心;动态规划(最长上升子序列))
- 【HDU】1051 - Wooden Sticks(贪心 & 二分 || 动态规划)
- HDU:1051 Wooden Sticks(贪心+动态规划DP||LIS?)
- HDU:1257 最少拦截系统(贪心+动态规划DP||LIS?)
- hdu 1257 动态规划
- HDU 4939 Stupid Tower Defense(贪心+动态规划)
- 动态规划、贪心、dynamic programming(DP)
- BUYING FEED(贪心+树状动态规划)
- Vacations(动态规划加贪心)
- 贪心算法(动态规划问题)
- poj1042 动态规划 贪心
- 贪心算法&动态规划
- 贪心&动态规划
- 动态规划和贪心
- HDU 1421 (动态规划)
- hdu 2084(动态规划)
- hdu 4001 (动态规划)
- Live555 的断网重连问题
- 自从我用了这个接口文档版本管理,我的组长多活了几年
- AVAudioPlayer 开始和暂停
- vue中常用组件
- Java删除数组指定元素,并压缩数组
- HDU 1257(动态规划?贪心)
- html之position总结
- Could not generate DH keypair,驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接
- 第二十八讲项目1.1项目1-M$pszi$y是嘛意思?
- 员工半夜被微信告知公司解散| 工资未发、押金未退,共享宝马走向破产…
- UITableViewCell右侧小箭头
- vue学习06--v-bind:class和v-bind:style
- Nginx负载均衡
- android studio signatures are inconsistent