NYOJ17-LIS优化
来源:互联网 发布:数据泄露防护系统 编辑:程序博客网 时间:2024/06/07 03:35
Question:
求单调递增的LIS的优化方法,不要朴素的,会超时
Solution:
定义状态:
dp[i]:长度为i的最长单调递增子序列的最后一个元素(保证这个元素是最小的,贪心的思路)
状态转移方程:
这个比较难写,我从原理的角度出发,解释一下
我们这里会发现,定义的这个状态一定是一个递增的序列,也就是说,我们在查找的额时候完全可以利用二分查找来优化我们的时间复杂度,二分查找最后返回的是我们第一个大于待查元素的坐标的位置,如果没有,返回总长度的加1的数值大小
Code:
#include"iostream"#include"cstdio"#include"cstring"#define N 10005using namespace std;char dp[N];int len;int n;char data[N];int bs(char k){int left=0;int right=len-1;while(left<=right){int mid=(left+right)/2;if(dp[mid]>k) right=mid-1;else if(dp[mid]<k) left=mid+1;else return mid;}return left;}int main(){cin>>n;while(n--){memset(data,0,sizeof(data));scanf("%s",data);dp[0]=data[0];len=1;for(int i=1;i<strlen(data);i++){int j=bs(data[i]);dp[j]=data[i];if(j+1>len) len=j+1;}cout<<len<<endl;}return 0;}
0 0
- NYOJ17-LIS优化
- nyoj17
- 单调队列优化LIS
- hduoj1025(LIS优化版)
- poj3903 LIS的优化
- NYOJ214-LIS优化
- poj2533Longest Ordered Subsequence LIS(优化)
- HDU1950 Bridging signals LIS优化
- LIS
- LIS
- LIS
- LIS
- LIS
- LIS
- LIS
- LIS
- LIS
- LIS
- bzoj 1832: [AHOI2008]聚会 lca
- EXTJS4.0 3种和后台交互数据的方法
- 87. Scramble String
- LeetCode: Two Sum II - Input array is sorted
- 文字记忆
- NYOJ17-LIS优化
- 继承
- 全角转半角笔记
- 在PHP中使用Mysqli操作数据库
- JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
- eclipse设置默认编码
- mysql安装步骤
- lightoj 1125 - Divisible Group Sums