poj 1631
来源:互联网 发布:根域名有什么用 编辑:程序博客网 时间:2024/06/05 00:26
这个题目是 给出一些连线关系,要你删除一些连线使得剩下的连线最多并且 不相交。。
看到后面知道其实这个题目就是求最长上升子序列。。可以用dp做,不过要dp+二分,
我用的是树状数组来做,c来存前i个中的最长上升子序列,dat[i]=getmax(dat[i]-1)+1。。
//============================================================================// Name : hello.cpp// Author : lxw// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include <iostream>using namespace std;#define MAXN 40010int dat[MAXN],c[MAXN];//c[i]表示前i个中的最长上升子序列int n;int lowbit(int x){return x&(-x);}void update(int i){int m=c[i];while(i<=n){if(c[i]<m)c[i]=m;i+=lowbit(i);}}int getMax(int i){int Max=0;while(i>0){if(c[i]>Max)Max=c[i];i-=lowbit(i);}return Max;}int main() {//setbuf(stdout,NULL);int t;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&dat[i]);memset(c,0,sizeof(c));int maxnum=0;for(int i=1;i<=n;i++){int tmp=c[dat[i]]=getMax(dat[i]-1)+1;if(tmp>maxnum)maxnum=tmp;update(dat[i]);}printf("%d\n",maxnum);}return 0;}
- poj 1631
- poj 1631
- POJ 1631
- poj 1631
- poj 1631
- POJ--1631
- POJ 1631 Bridging signals
- Bridging signals POJ 1631
- poj 1631 Bridging signals
- poj 1631 Bridging signals
- poj 1631 Bridging signals
- POJ 1631 Bridging signals
- POJ-1631-Bridging signals
- Poj 1631(dp)
- poj 1631--Bridging signals
- POJ 1631 Bridging signals
- POJ 1631 Bridging signals
- poj 1631 Bridging signals
- C# 二维码的生成 Open Source QRCode Library
- addStretch的作用
- sizeof与strlen的区别
- 学好VC++的十大良好习惯
- 《Ext JS权威指南》一书的源代码下载地址
- poj 1631
- oracle 11G 11.2.0.1.0 使用exp无法导出空表的解决办法
- printk的使用方法----积累
- Tomcat源码分析(九)--Session管理
- Visual Studio 遇到了异常。这可能是由某个扩展导致的。
- windows2003记录远程桌面连接登录日志的方法及注意事项
- andorid 内存优化管理(个人总结附带图片压缩源码)
- 获取字符串的N段子串
- 嵌入式经典面试题-嵌入式程序员必须知道的0x10个基础问题