1025-Wooden Sticks
来源:互联网 发布:怎么在mac上下载webex 编辑:程序博客网 时间:2024/06/06 07:12
经典的最长上升子序列:O(m*m) ---> O(m*logm)
#include<iostream> #include<algorithm>using namespace std; int cases;struct Node{int L,W;bool operator<(const Node &node) const{if(L!=node.L)return (L<node.L);elsereturn (W<node.W);}};Node nodes[5001];int res[5001];int n;int maxnum;void TheLongestDec(){int i,j;for(i=1;i<n;i++){for(j=0;j<i;j++){if(nodes[j].W>nodes[i].W && res[j]+1>res[i]){res[i]=res[j]+1;if(res[i]>maxnum)maxnum=res[i];}}}}int main(){cin>>cases;for(int now=1;now<=cases;now++){cin>>n;int i;maxnum=1;for(i=0;i<n;i++){cin>>nodes[i].L>>nodes[i].W;}sort(nodes,nodes+n);fill(res,res+n,1);TheLongestDec();cout<<maxnum<<endl;//for(i=0;i<n;i++)//{//cout<<nodes[i].L<<" "<<nodes[i].W<<endl;//}}return 0;}
在高效一点,利用二分查找
#include<iostream> #include<algorithm>using namespace std; int cases;struct Node{int L,W;bool operator<(const Node &node) const //注意:这里要有const不然提交到zju上会出现编译错误{if(L!=node.L)return (L<node.L);elsereturn (W<node.W);}};Node nodes[5001];int query[5001];int n;int top;void BinarySearch(int key) //query中已经是递减的,主要思想就是在同样长度的字串中尽量让最后一个元素最大{int low=0,high=top;int mid;while(low<=high){mid=(low+high)/2;if(query[mid]>key){low=mid+1;}else if(query[mid]<key){high=mid-1;}else if(query[mid]==key)break;}if(query[mid]>key){if(query[mid+1]<key){if(query[mid+1]==-1)top++;query[mid+1]=key;}}else if(query[mid]<key){query[mid]=key;}}void TheLongestDec(){int i;for(i=0;i<n;i++){BinarySearch(nodes[i].W); //利用二分查找}}int main(){cin>>cases;for(int now=1;now<=cases;now++){cin>>n;int i;for(i=0;i<n;i++){cin>>nodes[i].L>>nodes[i].W;}sort(nodes,nodes+n);top=0;fill(query,query+n,-1);query[0]=100000;TheLongestDec();cout<<top<<endl;}return 0;}
- ZOJ-1025-Wooden Sticks
- ZOJ 1025 Wooden sticks
- ZOJ 1025 Wooden Sticks
- zoj 1025 Wooden Sticks
- zoj 1025 wooden sticks
- 1025-Wooden Sticks
- ZOJ 1025 Wooden Sticks
- Zoj 1025 Wooden Sticks
- zoj 1025 Wooden Sticks
- zoj 1025 - Wooden Sticks
- zoj 1025 wooden sticks
- ZOJ - 1025 Wooden Sticks
- ZOJ 1025 Wooden Sticks
- ZOJ 1025:Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- Wooden Sticks
- make menuconfig时遇到的问题
- MFC将任意文件放入资源中调用
- 正则表达式30分钟入门教程
- Effective C++阅读笔记
- 检查IPv4和IPv6地址的正则表达式
- 1025-Wooden Sticks
- Linux编程里getopt_long函数用法详解
- 黑马程序员-列出一个目录中所有指定文件,使用FilenameFilter类
- 正则表达式 .
- Servlet初始化相关问题,以及Spring容器初始化
- 1008-Gnome Tetravex -zju
- 使用Runtime.getRuntime().exec()的方法调用本地mysqldump.exe备份还原数据库(路径中含有空格和数字)的方法
- IPv6地址表达方式、寻址模型和地址空间
- 1005 Jugs-zju