HDU1257 最少拦截系统 贪心算法 (多人乘船问题)水题
2016-06-23 20:51
423 查看
最少拦截系统 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 85 Accepted Submission(s) : 37 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.<br>怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.<br> Input 输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)<br> Output 对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统.<br> Sample Input 8 389 207 155 300 299 170 158 65<br> Sample Output 2<br> Source 浙江工业大学第四届大学生程序设计竞赛
来源: http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1009&ojid=0&cid=4493&hide=0
//对最小值处理方法1: #include<stdio.h> #include<stdlib.h> #define INF 0x7ffffff //系统最大值 int A[10000]={0}; int main(void) { //freopen("E:\\test.txt","r",stdin); // freopen("E:\\testx.txt","w",stdout); int T; while(scanf("%d",&T)!=EOF) { getchar(); int count=0; for(int i=1;i<=T;i++) { int M; int flag=0;//确定原有系统能否拦截 int tick; //用来标记最小下标 int min=INF; scanf("%d",&M); for(int j=0;j<count;j++) { if(A[j]>=M&&A[j]-M<min) { tick=j; flag=1; min=A[j]-M; } } if(!flag) A[count++]=M; else A[tick]=M; } printf("%d\n",count); } return 0; }
//对最小值处理方法2 //这里本来用A【0】开始存,排序 ,但一直WA,全改为A【1】开始就AC了 #include<stdio.h> #include<stdlib.h> int A[10000]={0}; int cmp(const void*a,const void*b) { return *(int *)a-*(int *)b; } int main(void) { //freopen("E:\\test.txt","r",stdin); // freopen("E:\\testx.txt","w",stdout); int T; while(scanf("%d",&T)!=EOF) { int count=0; for(int i=1;i<=T;i++) { int M;int flag=0; scanf("%d",&M); qsort(A+1,count,sizeof(A[0]),cmp);//每次把最小的放前面 for(int j=1;j<=count;j++) { if(A[j]>=M) { A[j]=M; flag=1; break;//一旦查到可放入的便赋值并退出 } } if(!flag) A[++count]=M; } // for(int i=1;i<=count;i++) printf("%d\t",A[i]); printf("%d\n",count); } return 0; }
相关文章推荐
- Android Studio项目目录结构介绍
- HTTP请求方法
- 数据库备份checksum选项你会用么?
- ubuntu启动无桌面图标?
- [HihoCoder]#1014 : Trie树
- Android命令行创建并运行 AVD模拟器
- Problem4-1001
- c++从int转string、char的方法总结
- hdu2084 数塔 记忆化搜索水题
- C++STL之vector
- 安卓开发中非常炫的效果集合
- HDU 3530 单调队列
- HDU 1003Max Sum 动态规划 经典题 最大子序列和
- 神经网络和深度学习简史(四):深度学习终迎伟大复兴
- HDU 1231 最大连续子序列
- APP测试点总结(功能,交互,死机崩溃状态分析,容易出错的检查点)
- Jira 安装与破解
- HDU1257 最少拦截系统 贪心算法 (多人乘船问题)水题
- myeclipse10运用git过程
- BZOJ_1616_[Usaco2008_Mar]_Cow_Travelling_游荡的奶牛_(DP)