动态规划练习 14
2012-08-12 23:00
162 查看
题目:Bridging signals (POJ 1631)
链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1631
[/code]
链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1631
[code]#include <iostream>
#include <vector>
#include <limits.h>
using namespace std;
// O(nlogn)
int LIS(const vector<int> &data)
{
// if min_value[i] is j, means j is the min end value of all i length
// increasing sequences.
vector<int> min_value(data.size(), INT_MAX);
int len = 1;
for (size_t i = 0; i < data.size(); ++i)
{
int left = 1, right = len;
while (left <= right)
{
int mid = (left + right) / 2;
if (data[i] > min_value[mid])
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
// right = left - 1
// min_value[right] < data[i], min_value[left] >= data[i]
if (data[i] < min_value[left])
{
min_value[left] = data[i];
}
if (len < left)
{
len = left;
}
}
return len;
}
int main(int argc, char **argv)
{
int cases, n;
vector<int> data;
cin >> cases;
while (cases--)
{
cin >> n;
while (n--)
{
int tmp;
cin >> tmp;
data.push_back(tmp);
}
cout << LIS(data) << endl;
data.clear();
}
return 0;
}
[/code]
相关文章推荐
- 动态规划练习一—14怪盗基德的滑翔翼
- 动态规划练习一 14:怪盗基德的滑翔翼
- 动态规划练习14:怪盗基德的滑翔翼
- 基础篇 _练习 小练习5~14
- 动态规划练习一 06:登山
- 笨办法学 Python · 续 练习 14:双链表
- 动态规划练习一 16:踩方格
- 动态规划练习一 17:开餐馆
- 动态规划练习一之最低通行费
- 动态规划练习26:滑雪
- 动态规划(练习题目,)
- Python 练习实例14
- 算法练习笔记(十)——动态规划之回文子列的查找
- 算法练习 动态规划 装配线调度
- 实验 14 综合练习四
- 练习 14:包管理:Debian 包管理工具aptitude
- 算法练习---跳跃游戏二(动态规划)
- 动态规划练习 9
- leetcode练习(14,7)
- 《C Primer Plus》(Fifth Edition)编程练习 第六章 14