rqnoj-217-拦截导弹-最长不上升子序列以及不上升子序列的个数
来源:互联网 发布:js校验18位身份证号 编辑:程序博客网 时间:2024/05/22 14:17
最长上升子序列的O(n*log(n))算法。
不上升子序列的个数等于最长上升子序列的长度。
#include<string.h>#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define INF 9999999int dp[10001];int num[10001];int num2[10001];int tops;int dos(int x){ if(tops==0) { tops++; return 0; } if(x<dp[0])return 0; if(x>dp[tops-1]) { tops++; return tops-1; } int mid,l,r; l=0;r=tops; mid=(l+r)/2; while(l<r) { if(dp[mid]>x)r=mid; if(dp[mid]<x)l=mid+1; if(dp[mid]==x)return mid; mid=(l+r)/2; } return mid;}int main(){ int n,i; while(~scanf("%d",&n)) { tops=0; for(i=0;i<n;i++)scanf("%d",&num[i]),num2[i]=INF-num[i]; for(i=0;i<n;i++) { int mid=dos(num2[i]); dp[mid]=num2[i]; } cout<<tops; tops=0; for(i=0;i<n;i++) { int mid=dos(num[i]); dp[mid]=num[i]; } cout<<" "<<tops<<endl; } return 0;}
- rqnoj-217-拦截导弹-最长不上升子序列以及不上升子序列的个数
- LuoguP2757 导弹的召唤 解题报告【最长上升子序列+最长不上升子序列】
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 【最长上升子序列】[NOIP1999]拦截导弹
- hdu1257 拦截导弹 最长上升子序列
- 最长不上升子序列
- 最长不上升子序列
- ACM 588. [NOIP1999] 拦截导弹(dp+最长不上升子序列)
- 最长不上升(下降)子序列——拦截导弹
- HDU 3998 Sequence 最长上升子序列+网络流 求不相交的最长上升子序列个数
- pku1887 最长不上升子序列
- poj 1887 最长不上升子序列
- codevs-3955 最长不上升子序列
- Vijos P1303 导弹拦截【最长上升子序列+DP】
- 3:拦截导弹(最长上升子序列)
- 最长上升子序列的个数
- 最长不上升子序列的优化(nlogn)
- 大型网站:前端性能优化和规范
- 中国人终生受用的70个神秘偏方(一)
- struts 3种从jsp页面 取值方式
- GridView动态进行行添加和删除
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- rqnoj-217-拦截导弹-最长不上升子序列以及不上升子序列的个数
- 类的声明
- ExtJS grid tableGrid study
- 获取页面上所有的选中的radio值以逗号隔开
- poj 2796 feel good(单调栈)
- Mongo 操作命令
- 会计记忆总结之十:主要经济业务事项账务处理
- 如何利用多核CPU来加速你的Linux命令 — awk, sed, bzip2, grep, wc等
- STDIN_FILENO的作用及与stdin 的区别