博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P1020 导弹拦截
阅读量:5349 次
发布时间:2019-06-15

本文共 1172 字,大约阅读时间需要 3 分钟。

1678292-20190516191930729-945903104.png

  1. 朴素解法,复杂度On2,只能过一半的点。
#include
using namespace std;typedef struct{ int num; int len; int dlen;}Missile;Missile miss[100010];int cnt=0,n=1,maxnum=0,maxl=0;int main(){ while(cin>>miss[n].num){ n++; } n--; for(int i=n;i>=1;i--) { for(int j=i;j<=n;j++) {//dp if(miss[i].num>=miss[j].num) { miss[i].len=max(miss[i].len,miss[j].len+1); } if(miss[i].num
  1. 分析题意可知求一个最长不升子序列,和一个最长上升子序列,转换为LIS线性dp求解,复杂度为Onlogn
#include
using namespace std;int arr[100010],le[100010],gt[100010];int p1,p2;int main(){ int n=1; while(cin>>arr[n])n++; n--; le[1]=gt[1]=arr[1]; p1=p2=1; for(int i=2;i<=n;i++) { if(arr[i]<=le[p1])le[++p1]=arr[i];//下降不升子序列,求最多打下数目 //10 8 6 +7 需要替换6 +8替换6 else le[upper_bound(le+1,le+p1+1,arr[i],greater
())-le]=arr[i]; if(arr[i]>gt[p2])gt[++p2]=arr[i];//上升子序列,求系统数目 //1 3 5 7 +5 替换5 +6替换7 else gt[lower_bound(gt+1,gt+p2+1,arr[i])-gt]=arr[i]; } cout<
<
<

转载于:https://www.cnblogs.com/tldr/p/10877503.html

你可能感兴趣的文章
巧用Win+R
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
新手村之循环!循环!循环!
查看>>
线程安全问题
查看>>
linux的子进程调用exec( )系列函数
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>