对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章

https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html

这里介绍最简单的一种,LIS的求法

其实就是二分,找单调性来二分

HDU1950是一道裸题

 #include <iostream>
#include<cstring>
#include <algorithm>
#define INF 0x3f3f3f3f
using namespace std;
const int N = 1e5 + ;
int s[N];
int n,p,a[N];
int len;
int main()
{
cin>>n;
while(n--){
cin>>p;
memset(s,,sizeof(s));
for(int i = ;i<p;i++)cin>>a[i];
s[] = a[];len = ;//长度从1开始
for(int i = ;i<p;i++){ int t = a[i];
if(t>s[len])s[++len] = a[i];
else{
/*************/int l = ,r = len,mid;//这里的二分法采用了左闭右闭的思路
<span style="white-space:pre"> </span>int ans = ;
while(l<=r)
{
mid = (l+r)/;
if(s[mid]<t)
{l = mid +;ans = max(ans,mid);}//ans即为思路中的j,j必然为s数组中小于t的最大的数
else r = mid-;
}
s[ans+] = t;/******************/
}
}
//for(int i = 1;i<p;i++){cout<<s[i];}//有必要可以打开看看s中存的是什么值
cout<<len<<endl;
}
return ;
}

然后

 int p = lower_bound(s+,s+len+,t)-s;
s[p] = t;

如果觉得不对可以找到合唱队形那个题的程序对拍一下子

最新文章

  1. C++之路进阶——poj3461(Oulipo)
  2. Solr Cloud - SolrCloud
  3. Laterality issue on fMRI image
  4. Node进阶:核心模块http简介
  5. 如何优雅地使用 Sublime Text
  6. js各种宽高(3)
  7. struts2中的表达元素标签使用详解
  8. HTTP的请求头标签If-Modified-Since
  9. oracle sql 树操作
  10. mac/Linux/centos ssh连接服务器以及跳板机,实现类型Xshell 功能
  11. JVM 组成以及各部分作用
  12. 201771010126王燕《面向对象程序设计(Java)》第三周学习总结
  13. python 的运行方式和基础变量
  14. N!
  15. 2017&quot;百度之星&quot;程序设计大赛 - 复赛 01,03,05
  16. sgu 169 Numbers
  17. holiday(假期)_题解
  18. [Spark Core] 在 Spark 集群上运行程序
  19. nginx开启gzip压缩前端css,js
  20. Datatable转实体 实体转换辅助类

热门文章

  1. 学习调用第三方的WebService服务
  2. C/C++学习计划
  3. [codecademy]fonts in css
  4. MDL数据结构
  5. 数学口袋精灵感受与BUG
  6. rfid工作原理
  7. 关于jquery中on绑定click事件在苹果手机失效的问题(巨坑啊)
  8. 第119天:移动端:CSS像素、屏幕像素和视口的关系
  9. 【uoj#207】共价大爷游长沙 随机化+LCT维护子树信息
  10. 【数据库_Mysql】MySQL—修改表时给表添加联合主键约束