hdu 1257 LIS (略坑5
---恢复内容开始---
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 38242 Accepted Submission(s): 15029 Problem Description
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.
某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,
请帮助计算一下最少需要多少套拦截系统.
Input 输入若干组数据.每组数据包括:导弹总个数(正整数),导弹依此飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)
Output 对应每组数据输出拦截所有导弹最少要配备多少套这种导弹拦截系统. Sample Input 8 389 207 155 300 299 170 158 65 Sample Output 2
最开始想的便是lis,不过貌似跑偏了,计算出最大反序lis,然后根据标记查找最少需要几台,不过算法有问题巴拉巴拉不过-。-;
神测试数据:10 3 6 5 3 2 1 0 5 4 3 答案应是2(65543/33210),按我的就是3(hhhh
好吧然后就是贪心了,先把第一胎加入系统数组中,接着如果后面的比他小/==便无需在新购一台,更改比他大的最小机器即可,
反之加入一台新机器。大小就是他,不过貌似不用每次sort,因为按照这个逻辑机器的顺序恰是升序嘻嘻; 代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int i,j,n,k,l,sum,a[1005],temp[1005]; //a[i]也不必开数组
while (cin>>n){ sum=-1;
for (i=1;i<=n;i++){
int flag=1;
cin>>a[i];
if (i==1) temp[++sum]=a[i];
for (j=0;j<=sum;j++){
if (temp[j]>=a[i]) {
temp[j]=a[i];
flag=0;
break; } }
if (flag) temp[++sum]=a[i]; //加入新机器中
}
cout<<sum+1<<endl; }
return 0; }
然后发现麻麻的直接求一遍lis就ac了汗死:
#include<bits/stdc++.h>
using namespace std;
int lis(int n,int a[]) {
int i,j,macn,dp[1005]={0},sum=0;
for (i=1;i<=n;i++) {
macn=0; for (j=1;j<i;j++) {
if (a[j]<a[i]&&dp[j]>macn) macn=dp[j];
}
dp[i]=macn+1;
sum=max(sum,dp[i]); }
return sum; }
int main() {
int a[1005],n,i,j;
while (cin>>n){
for (i=1;i<=n;i++)
cin>>a[i];
cout<<lis(n,a)<<endl; }
return 0; } 炮弹发射高度递减,如果后面一台大于前面的高度,就不能拦截后面的这台,所以要多一台系统
简单证明: a b c d 假设a<c<d, 则b>d/b<a,
---恢复内容结束---
hdu 1257 LIS (略坑5的更多相关文章
- HDU 1257——最少拦截系统——————【LIS变型题】
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDU 1257 最少拦截系统(Dilworth定理+LIS)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU 1257 最少拦截系统 最长递增子序列
HDU 1257 最少拦截系统 最长递增子序列 题意 这个题的意思是说给你\(n\)个数,让你找到他最长的并且递增的子序列\((LIS)\).这里和最长公共子序列一样\((LCS)\)一样,子序列只要 ...
- 【贪心】HDU 1257
HDU 1257 最少拦截系统 题意:中文题不解释. 思路:网上有说贪心有说DP,想法就是开一个数组存每个拦截系统当前最高能拦截的导弹高度.输入每个导弹高度的时候就开始处理,遍历每一个拦截系统,一旦最 ...
- 怒刷DP之 HDU 1257
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- HDU 1257 最少拦截系统 (DP || 贪心)
最少拦截系统 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统 DP 贪心
参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...
- HDU 1257 最少拦截系统(贪心 or LIS)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 1257 最少拦截系统【贪心 || DP——LIS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1257 http://acm.hust.edu.cn/vjudge/contest/view.action ...
随机推荐
- Vue属性中带’-‘的处理方式
我们在写属性时经常会加入’-‘来进行分词,比如:<panda from-here=”China”></panda>,那这时我们在props里如果写成props:[‘form-h ...
- 剥开比原看代码03:比原是如何监听p2p端口的
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...
- No mapping found for HTTP request with URI [/Portal/download] in DispatcherServlet with name 'springmvc'
本文为博主原创,未经允许不得转载: 遇到这个异常,总结一下这个问题发生的原因: 这个原因是在springmvc中在DispatcherServlet分发请求时,解析不到相应的请求路径.后台要请求的路径 ...
- [转载]解决linux 下多线程错误 undefined reference to `sem_init'
转自:https://blog.csdn.net/yzycqu/article/details/7396498?utm_source=copy 解决linux 下多线程错误 undefined ref ...
- 不消失的 taskeng 黑窗口?
2017-01-06出来不消失的 taskeng 黑窗口? 计划运行某些程序时会出现这种现象.例如: 在计划中运行 a.bat : a.bat 里面的内容:start notepad.exestart ...
- dhcp、tftp及pxe简介
DHCP: 全称:Dynamic Host Configuration Protocol 动态主机配置协议 DHCP配置内容: IP/Netmask Gateway DNS Server bootp ...
- C#题目及答案(1)
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
- linux golang
wget -c http://www.golangtc.com/static/go/go1.3.linux-386.tar.gz #下载32位Linux的够源码包 tar -zxvf go1.1.li ...
- jqGrid API (转)
来源:https://www.cnblogs.com/MonaSong/p/5109991.html JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGr ...
- 函数指针-如何理解typedef void (*pfun)(void)
问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...