【动态规划】【二分】【最长不下降子序列】洛谷 P1020 导弹拦截
2014-10-28 08:42
351 查看
最长不下降子序列的nlogn算法 见 http://www.cnblogs.com/mengxm-lincf/archive/2011/07/12/2104745.html
这题是最长不上升子序列,倒过来当最长不下降子序列搞就行。
若是最长上升子序列,将upper_bound改成lower_bound即可。
这题是最长不上升子序列,倒过来当最长不下降子序列搞就行。
若是最长上升子序列,将upper_bound改成lower_bound即可。
#include<cstdio> #include<algorithm> using namespace std; int n,en=1,d[100001],b[100001],k=1,t[100001],l[100001]; int* p; int main() { while(scanf("%d",&t[n+1])!=EOF) n++; for(int i=1,j=n;i<=n;i++,j--) d[i]=t[j]; l[1]=t[1]; for(int i=2;i<=n;i++) { int x=0; for(int j=1;j<=k;j++) if(l[j]>=t[i]) { if(!x) x=j; else if(l[j]<l[x]) x=j; } if(!x) l[++k]=t[i]; else l[x]=t[i]; } b[1]=d[1]; for(int i=2;i<=n;i++) { p=upper_bound(b+1,b+en+1,d[i]); if(!(*p)) en++; (*p)=d[i]; } printf("%d\n%d\n",en,k); return 0; }
相关文章推荐
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- 最长递增、递减子序列(导弹拦截问题)动态规划练习
- 蓝桥杯 拦截导弹 动态规划(最长下降子序列+最长上升子序列)
- 拦截导弹(规律:下降子序列的个数等于最长上升子序列的长度)
- 【动态规划】【二分】【最长下降子序列】XMU 1041 Sequence
- 【最长下降子序列】【动态规划】【二分】XMU 1041 Sequence
- 拦截导弹,最长非上升子序列,DP+二分
- NYOJ - 79 - 拦截导弹(动态规划--LIS--最长递增子序列变形)
- 求最长不下降序列(动态规划)
- 九度OJ 1112:拦截导弹 (DP、最长下降子序列)
- 【动态规划】【二分】【最长上升子序列】Vijos P1028 魔族密码
- 【动态规划】【二分】【最长上升子序列】Vijos P1028 魔族密码
- 最长升序和降序子序列-聪明的美食家_拦截导弹
- 【最长递增子序列】 导弹拦截系统
- 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)
- 【动态规划】【二分】【最长上升子序列】HDU 5773 The All-purpose Zero
- 导弹拦截 最长递减(增)子序列问题
- Luogu 1020 导弹拦截(动态规划,最长不下降子序列,二分,STL运用,贪心,单调队列)
- ZJU1876 Edit Step Ladders - 动态规划 最长序列+二分优化
- 清橙 A1120 拦截导弹 -- 动态规划(最长上升子序列)