sdnu 1040.导弹拦截(2010 NOIP普及组)
2015-08-05 13:31
351 查看
原题链接:http://210.44.14.31/problem/show/1040
这道题着实有些坑。
上面明明写着不能高于即<=。
但在计算一个导弹拦截系统能拦截最多能拦截多少导弹时,按<=关系算。
计算需要多少个导弹拦截系统时,需要按<关系算。
因为这样,WA不知多少次。
在求需要多少个导弹拦截系统有两种方法,但两种方法的本质是一样的。
代码如下:
方法1:
方法2:
这道题着实有些坑。
上面明明写着不能高于即<=。
但在计算一个导弹拦截系统能拦截最多能拦截多少导弹时,按<=关系算。
计算需要多少个导弹拦截系统时,需要按<关系算。
因为这样,WA不知多少次。
在求需要多少个导弹拦截系统有两种方法,但两种方法的本质是一样的。
代码如下:
方法1:
#include<iostream> #include<cstring> #include<string> #include<ctype.h> #include<cstdio> using namespace std; int main() { char ch; int high[25], MD[25], maxone[25]; //分别记录导弹的高度。需要多少套导弹系统。一个导弹系统最多能拦截多少个导弹。 int sum = 0, max = 0, i = 0; memset(MD, 40000, sizeof(MD)); memset(maxone, 0, sizeof(maxone)); while (cin >> high[i]) { ch = getchar(); int j; for (j = i - 1; j >= 0; j--) //求最长递减子序列 { if (high[i] <= high[j] && maxone[j]>maxone[i]) { maxone[i] = maxone[j]; } } maxone[i] ++; if (max < maxone[i]) max = maxone[i]; for (j = 0; j <= sum; j++) //求需要多少套导弹拦截系统 { if (high[i] < MD[j]) //原理:每个MD[i]为一套系统,当小于这套系统目前拦截导弹高度时,就拦截该导弹。否则,往下寻找。 { MD[j] = high[i]; break; } } if (j>sum) MD[++sum] = high[i];//j>sum说明需要再添加一套系统 i++; } cout << max << ',' << sum << endl;//sum+1为需要多少套系统,所以sum为还需要多少套系统 return 0; }
方法2:
#include<iostream> #include<cstring> #include<string> #include<ctype.h> #include<cstdio> using namespace std; int main() { char ch; int high[25], MD[25], maxone[25]; int sum = 0, max = 0,i=0; memset(MD, 0, sizeof(MD)); memset(maxone, 0, sizeof(maxone)); while (cin >> high[i]) { ch = getchar(); int j; for (j = i - 1; j >= 0; j--) { if (high[i] <= high[j] && maxone[j]>maxone[i]) maxone[i] = maxone[j]; } maxone[i] ++; if (max < maxone[i]) max = maxone[i]; for (j = i-1; j >=0; j--) { if (high[i]>=high[j] && MD[j] > MD[i]) //意思为:该导弹大于前面某套系统的某个导弹的高度,循环完一次存的便是<span style="color:#ff0000;"> 最大不能拦截该导弹的系统编号</span>。 MD[i] = MD[j]; } MD[i]++; //然后+1,表示能拦截该导弹的系统编号 if (sum < MD[i]) sum = MD[i]; i++; } cout << max << ',' << sum-1 << endl;///sum为需要多少套系统,所以sum-1为还需要多少套系统 return 0; }
相关文章推荐
- Facebook工程师是如何改进他们Android客户端的
- ORACLE 体系结构详解
- SQLyog 配置SQL Assitant
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- set
- mp4文件格式解析参考代码
- perl环境配置以及Eclipse安装perl开发插件
- Jedis学习记录
- shell脚本初级入门
- 设计模式之策略模式
- 开通了自己的博客
- iOS开发之——单例的几种设计方式
- 《金融数据分析导论:基于R语言》习题答案(第一章)
- 黑马程序员--Java--重要知识点1
- JS 常用正则表达式
- ISO9000对研发管理的作用
- 使用Nginx+FFMPEG搭建HLS直播转码服务器
- [js开源组件开发]数字或金额千分位格式化组件
- C++常量指针this
- 使用百度统计对网站进行流量分析和统计