NYOJ 17 单调递增最长子序列 (二分 STL,lower_bound)
来源:互联网 发布:ubuntu 12.04 配置dns 编辑:程序博客网 时间:2024/05/18 03:09
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
- 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4- 输入
- 第一行一个整数0<n<20,表示有n个字符串要处理
随后的n行,每行有一个字符串,该字符串的长度不会超过10000 - 输出
- 输出字符串的最长递增子序列的长度
- 样例输入
3aaaababcabklmncdefg
- 样例输出
137
题意:二分 找 最长上升子序列的长度。
STL: t = lower_bound(s,s+top,m)-s; 返回值第一个大于等于 m 的数的 地址 ,s 是一个数组,K 为其长度,要减 s 得第一个大于等于m 的数的下标
将那个位置用 m 替换 (得到的最长上升子序列,并不一定是正确的,但是,长度是正确的)
已AC代码:#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char ch[12000],str[12000];int main(){int n;scanf("%d",&n);while(n--){int len,i,j;scanf("%s",ch);len=strlen(ch);str[0]=ch[0];j=1;for(i=1;i<len;++i){if(ch[i]>str[j-1]){str[j]=ch[i];j++;}else{int t=lower_bound(str,str+j,ch[i])-str;str[t]=ch[i];}}printf("%d\n",j);}return 0;}
1 0
- NYOJ 17 单调递增最长子序列 (二分 STL,lower_bound)
- NYOJ 17:单调递增最长子序列【二分】
- NYOJ-17:单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17-单调递增最长子序列
- nyoj-17-单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- NYOJ 17 最长单调递增子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- nyoj 17 单调递增最长子序列
- NYOJ 17 单调递增最长子序列
- 单调递增最长子序列(NYOJ 17)
- [LeetCode] Remove Duplicates from Sorted List II
- LeetCode Find Minimum in Rotated Sorted Array II 有条件的二分
- hdu2041
- Redis各种数据结构介绍以及相应的业务场景应用
- Kmeans算法寻找合适K值
- NYOJ 17 单调递增最长子序列 (二分 STL,lower_bound)
- 深入剖析U3D的Miss Mono Behaviour问题
- HTML 30分钟入门教程
- 第一章 原始字符串, 模块
- Unity代码混淆方案
- HDU2067 - 小兔的棋盘 (递推)
- wr703n路由器搭载openwrt系统挂载U盘历程
- Android—获取控件的高度
- Python正则表达式