动态规划:LIS优化
对于1D/1D动态规划来说,理论时间复杂度都是O(n^2)的,这种动态规划一般都可以进行优化,贴一篇文章
https://wenku.baidu.com/view/e317b1020740be1e650e9a12.html
这里介绍最简单的一种,LIS的求法
其实就是二分,找单调性来二分
HDU1950是一道裸题
1 #include <iostream> 2 #include<cstring> 3 #include <algorithm> 4 #define INF 0x3f3f3f3f 5 using namespace std; 6 const int N = 1e5 + 5; 7 int s[N]; 8 int n,p,a[N]; 9 int len; 10 int main() 11 { 12 cin>>n; 13 while(n--){ 14 cin>>p; 15 memset(s,0,sizeof(s)); 16 for(int i = 0;i<p;i++)cin>>a[i]; 17 s[1] = a[0];len = 1;//长度从1开始 18 for(int i = 1;i<p;i++){ 19 20 int t = a[i]; 21 if(t>s[len])s[++len] = a[i]; 22 else{ 23 /*************/int l = 1,r = len,mid;//这里的二分法采用了左闭右闭的思路 24 <span style="white-space:pre"> </span>int ans = 0; 25 while(l<=r) 26 { 27 mid = (l+r)/2; 28 if(s[mid]<t) 29 {l = mid +1;ans = max(ans,mid);}//ans即为思路中的j,j必然为s数组中小于t的最大的数 30 else r = mid-1; 31 } 32 s[ans+1] = t;/******************/ 33 } 34 } 35 //for(int i = 1;i<p;i++){cout<<s[i];}//有必要可以打开看看s中存的是什么值 36 cout<<len<<endl; 37 } 38 return 0; 39 }
然后
1 int p = lower_bound(s+1,s+len+1,t)-s; 2 s[p] = t;
如果觉得不对可以找到合唱队形那个题的程序对拍一下子
转载于:https://www.cnblogs.com/aininot260/p/9627043.html
动态规划:LIS优化相关推荐
- 《中国人工智能学会通讯》——11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用...
11.34 基于近似动态规划的优化控制研究及 在电力系统中的应用 上世纪 50 年代以来,在空间技术发展和数字计算机实用化的推动下,动态系统的优化理论得到了迅速的发展,形成了一个重要的学科分支--最优 ...
- 动态规划背包问题优化空间复杂度——滚动数组
动态规划背包问题优化空间复杂度--滚动数组 背包问题 空间复杂度优化 Java代码 链接:代码随想录背包问题 背包问题 背包问题是动态规划中基本的问题,我们考虑下面的简单问题: 假设背包容量为 ...
- 03 线型动态规划——LIS模型
LIS模型--最长上升子序列(Longest Increasing Subsequence) [例1]最长上升子序列 Description 一个数的序列bi,当b1< b2 < ... ...
- [剑指offer]面试题第[60]题[JAVA][n个骰子的点数][动态规划][空间优化]
[问题描述][中等] 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率.你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集 ...
- BZOJ1010 [HNOI2008]玩具装箱toy 动态规划 斜率优化
原文链接http://www.cnblogs.com/zhouzhendong/p/8687797.html 题目传送门 - BZOJ1010 题意 一个数列$C$,然后把这个数列划分成若干段. 对于 ...
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...
- LIS优化 —— 队列优化 + 二分
mbp送去维修的第5天. Description 给定一长度为n的数列,请在不改变原数列顺序的前提下,从中随机的取出一定数量的整数,并使这些整数构成单调上升序列. 输出这类单调上升序列的最大长度.数据 ...
- P1091 [NOIP2004 提高组] 合唱队形(动态规划+LIS)
P1091 [NOIP2004 提高组] 合唱队形 Part1:链接: 点我就送屠龙宝刀[doge] Part2:题目 Part3:思路 隔了这么久,屑人再次捡起了他的节操,洗了洗,然后开始续写他的苦 ...
- 简单瞎搞题 动态规划的优化
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 S=∑xi2S = \sum{{x_ ...
最新文章
- [译] 在 Facebook 发一张登机牌,你就有可能被盗号了
- 装配bean的三种方式
- Android 第三课 构建简单的用户界面
- boost::describe模块实现pp_call的测试程序
- svn命令行工具安装使用(windows)
- [李景山php]每天TP5-20170111|thinkphp5-Model.php-4
- toolbar java_Java ToolBar.layout方法代码示例
- python123第一周测试作业指导书_风速仪作业指导书.doc
- html图片圆点切换,JQuery和html+css实现带小圆点和左右按钮的轮播图实例
- Java并行编程–从并行任务集获取反馈
- input checkbox 选中问题
- 二阶常系数微分方程求解步骤
- python中 f代表什么_python 中下拉框中的f,v,m是什么意思??
- 十八. 项目采购管理
- PSINS_Toolbox使用心得1
- 浅入浅出Caffeine cache
- 嵌入式Linux中间件,高可用性(HA)和嵌入式管理中间件:Enea Element详解
- 多线激光雷达+imu的gazebo仿真
- c语言输出字母A的ascii值,ascii是什么意思_C语言中如何输出ASCII码
- react中英文切换一
热门文章
- 深度学习pytorch--多层感知机(一)
- 360安全浏览器兼容模式怎么设置_测试新手一定要知道:最实用的Web兼容性测试经验都在这...
- 怎么修改ipv4服务器,如何修改ipv4 wins 服务器地址
- java中给组合框加监听器,如何区分ActionEvent中的多个组合框
- 计算机学校教学大纲,中等职业学校计算机应用基础教学大纲
- python里写在文件的指定行_python文件操作如何写在指定的行
- python服务器搭建 实战_实战讲解:如何用Python搭建一个服务器
- python语言变量随时声明_2. Go语言五种变量创建的方法
- 敲代码时如何快速移动光标_如何用 Linux 技巧大大提高工作效率?
- pat乙级 1007 素数对猜想(C++)