hdu 5141 二分法求最长上升子序列,扫描法求解
来源:互联网 发布:南阳网络推广外包 编辑:程序博客网 时间:2024/06/05 06:46
题目:
题目分析:
设区间的左右边界,左右边界只要有一个边界不同,那么他们定义为不同区间
这道题就是求包含最长上升子序列的区间的总数
代码及思路如下
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <queue>#define MAX 100100using namespace std;long long a[MAX];// 存的是读取的数long long c[MAX];//记录序列长度为下标时的结束的最靠右的元素的下标long long dp[MAX];//记录以当前元素结尾的序列的最大长度long long first[MAX];//记录以当前元素结尾的序列的最大长度的序列最靠右的起点int n;//寻找到当前节点作为末尾元素的序列最长时的长度int bsearch ( long long num ){ int left = 0 , right = n , mid; while ( left != right ) { mid = left + right >> 1; if ( num > a[c[mid]] && num <= a[c[mid+1]] ) return mid; if ( num > a[c[mid]] ) left = mid+1; else right = mid; } return left; }int main ( ){ while ( ~scanf ( "%d" , &n ) ) { for ( int i = 1 ; i <= n ; i++ ) scanf ( "%lld" , &a[i]) ; int ans = 0; memset ( c , 0 , sizeof ( c ) ); c[0] = 100007; a[100007] = 0; a[0] = 0xffffffff; long long temp; for ( int i = 1; i <= n ; i++ ) { temp = bsearch ( a[i] ); if ( temp == 0 ) first[i] = i; else first[i] = first[c[temp]]; ( a[i] <= a[c[temp+1]] ) && (c[temp+1] = i ); ans = max ( temp + 1, ans*1LL ); dp[i] = temp + 1; } long long res = 0; for ( int i = 1 ; i <= n ; i++ ) { if ( dp[i-1] == ans ) if ( dp[i] < dp[i-1] ) dp[i] = dp[i-1] , first[i] = first[i-1]; if ( dp[i] == ans ) res += first[i]; } printf ( "%lld\n" , res ); }}
0 0
- hdu 5141 二分法求最长上升子序列,扫描法求解
- hdu 1950 Bridging signals--二分法求最长上升子序列
- 求最长上升子序列
- 求最长上升子序列
- 求最长上升子序列
- 求最长上升子序列
- 求最长上升子序列
- hdu 4604 Deque (二分法求最长单调子序列)
- hdu 1423 dp 求最长公共上升子序列
- LIS求解最长上升子序列问题
- UVA - 10635 Prince and Princess (二分法 求最长上升子序列)
- hdu 1025 Constructing Roads In JGShining's Kingdom(二分法+最长上升子序列)
- HDU 3998 Sequence 最长上升子序列+网络流 求不相交的最长上升子序列个数
- 动态规划求最长上升子序列
- 求最长的上升子序列
- 求最长上升子序列的长度
- 求最长上升子序列的长度
- STL求最长上升子序列
- git学习第一课
- Linux汇编语言开发指南
- 软件在线升级
- VI下删除文本中的^M
- 消息推送框架 Comet4J
- hdu 5141 二分法求最长上升子序列,扫描法求解
- uva 10118(dp + 回溯)
- Eclipse 右键Refrence 无效的解决方法
- Mongodb杂谈(一)
- 一个程序猿的个人网站00
- 消息推送框架 Comet4J
- 正则表达式匹配
- java.sql.SQLException:ORA-01861:文字和格式字符串不匹配
- Jmeter CSS/'JQuery extractor Match No.(匹配数字的含义)