poj 1631 Bridging signals dp LIS
2015-11-08 20:12
441 查看
题目
题目链接:http://poj.org/problem?id=1631题目来源:《挑战》练习题
简要题意:两排pp个点,给出左边第ii个与右边某点连个桥,问最多留下多少不相交的桥。
数据范围:p<40000p < 40000
题解
与hdu1025差不多的一道题,不过杭电那道范围更大。因为其中的关系就是当前连的桥编号比前面连的桥都大,可以等价转化为LIS。
实现
使用标准的upper_bound LIS乱搞一发就行了,代码很短。代码
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #include <cstring> #include <stack> #include <queue> #include <string> #include <vector> #include <set> #include <map> #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define fi first #define se second using namespace std; typedef long long LL; typedef vector<int> VI; typedef pair<int,int> PII; LL powmod(LL a,LL b, LL MOD) {LL res=1;a%=MOD;for(;b;b>>=1){if(b&1)res=res*a%MOD;a=a*a%MOD;}return res;} // head const int N = 4E4+5; int lis ; int main() { int t, n, x; scanf("%d", &t); while (t--) { scanf("%d", &n); int ans = 0, pos; for (int i = 0; i < n; i++) { scanf("%d", &x); pos = upper_bound(lis, lis+ans, x)-lis; lis[pos] = x; if (pos == ans) ans++; } printf("%d\n", ans); } return 0; }
相关文章推荐
- LINUX 系统运维转向运维开发
- EasyUI - 后台管理系统 - 增加,删除,修改
- 开源消息队列系统 rabbitmq-server 安装详细
- 《大道至简》第六章读后感
- 根据分辨率改变宽度 demo
- 你不知道的JavaScript--Item29 DOM基础详解
- mysql的主从,主主,半同步
- strstr和strchr的区别
- 《大道至简》第六章读后感
- android/util中的一些常用类
- 你不知道的JavaScript--Item29 DOM基础详解
- XAMPP-1.8.3上将mediawiki-1.23.3升级到1.25.3遇到的问题
- SQLite学习手册(内置函数)
- HDU 1254推箱子
- 数据采集之file_get_contents实现
- poj 2007 Scrambled Polygon (极角排序模板题)
- CSS判断不同分辨率显示不同宽度布局CSS3技术支持IE6到IE8
- 基础书籍
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- 看的越多,懂得越多,也就迷茫越多。