HDOJ 1257 LIS
来源:互联网 发布:自学编程入门基础知识 编辑:程序博客网 时间:2024/04/30 03:22
题目大意:
输入N,表示雷达监测到来袭的导弹数目,之后输入每个导弹的发射高度,因为每套系统第一次发射的导弹高度任意高,后续发射的导弹不能高于先前的高度,所以计算打落所有导弹所需要的最小系统数量。
算法思想:
因为每套系统所发射的导弹是非递增的序列,所以只需求出所有来袭导弹的最长上升序列的规模数即为需要的系统数。用dp[i]记录到i的最长上升子序列,状态方程为
dp[i]=max(dp[j])+1 (1=<j<i) .
代码如下:
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int MAXN=10000;int H[MAXN];bool vis[MAXN];int dp[MAXN];//记录最大长度int LIS(int H[],int N){ int m=0; int ans=1; dp[1]=1; vis[1]=true; for(int i=2;i<=N;i++){ m=0; for(int j=1;j<i;j++){ if(dp[j]>m&&H[j]<H[i]){ m=dp[j]; } } dp[i]=m+1; ans=max(ans,dp[i]); } return ans;}int main(){ int N; while(cin>>N){ for(int i=1;i<=N;i++){ cin>>H[i]; } cout<<LIS(H,N)<<endl; } return 0;}
0 0
- HDOJ 1257 LIS
- HDOJ 1257 最少拦截系统(LIS)
- HDOJ Bridging signals 【LIS】
- HDOJ 5748 Bellovin(LIS)
- hdoj 5773 <变相LIS>
- HDOJ-----5748Bellovin(LIS)
- HDOJ 1257 最少拦截系统(LIS O(nlogn) )
- HDOJ 5141 LIS again 二分
- HDOJ 1950 Bridging signals(LIS)
- HDOJ 1051 Wooden Sticks(LIS)
- hdoj--1051--Wooden Sticks(LIS)
- HDOJ 4352 XHXJ's LIS
- HDOJ 1069 Monkey and Banana(LIS)
- HDOJ 1160 FatMouse's Speed(LIS)
- 【BestCoder】 HDOJ Revenge of LIS II
- HDOJ 5087 Revenge of LIS II DP
- HDOJ-5087-Revenge of LIS II
- HDOJ 1025 LIS O(nlog(n))
- jquery table 删除所有行但保留标题行的方法
- linux下通过yum安装svn及配置(实践操作)
- Matlab立体视差提取
- android 利用SimpleDateFormat格式化时间不准确的问题
- 数据结构——动态链表
- HDOJ 1257 LIS
- Android开发周围wifi热点和属性的获取
- oracle中取当前时间函数的区别
- HTML5简单的拖拽实现
- struct和union的区别
- 寻找自适应元素(10)-透视表的自动拆分数据
- 日常开发遇到问题笔记
- 小团队协作,磨合日志
- Java链接MySQL