hdoj1025
来源:互联网 发布:厦门大学吴春明知乎 编辑:程序博客网 时间:2024/06/08 06:49
问题可以借助求序列中的最长递增子序列解决,dp会超时,有一个O(nlogn)的方法来求最长递增序列,通过更新LIS[i]数组来实现,LIS[i]表示长度为i的最长递增序列的最小末尾,遍历原序列,保持LIS的更新即可
二分搜索的想法很好,但要写一个没bug的二分确实很难!
#include<cstdio>int road[500010];int lt[500010];int lis;void binary_search(int l,int r,int in){if(r-l==1) {if(lt[l]>in) lt[l]=in;else{lt[l+1]=in;if(l+1>lis) lis++;}return;}int mid=(r+l)/2;if(lt[mid]==in) return;if(lt[mid]>in) binary_search(l,mid,in);else binary_search(mid,r,in);}int main(){int n;int i;int tcase=1;int a,b;while(scanf("%d",&n)!=EOF){for(i=1;i<=n;i++){ scanf("%d %d",&a,&b);road[a]=b;}lis=1;lt[1]=road[1];for(i=2;i<=n;i++)binary_search(1,lis+1,road[i]);printf("Case %d:\n",tcase++);printf("My king, at most %d ",lis);if(lis>1) printf("roads can be built.\n\n");else printf("road can be built.\n\n");}return 0;}
0 0
- hdoj1025
- hdoj1025
- HDOJ1025隐藏着的LIS
- 最长递增子序列(hdoj1025)
- hdoj1025 Constructing Roads In JGShining's Kingdom(DP+二分法)
- HDOJ1025 Constructing Roads In JGShining's Kingdom(LIS,DP)
- hdoj1025 Constructing Roads In JGShining's Kingdom (最长递增子序列 , map)
- VC实现解压 隐藏解压窗口
- 万年历方法二
- delphi改变webbrowser中元素的值
- C#-Winform MessageBox使用手册
- OpenCV3.0中CvMat格式转换为Mat格式的方法
- hdoj1025
- 【CODEFORCES】C. Gargari and Bishops
- hdu1695--GCD(欧拉函数+容斥原理)
- python 学习笔记——try,except,else,finally
- JavaScript中substring()与substr()的用法
- KVC的真正强大之处
- 杨辉三角算法
- Python学习(一)
- delphi获得webbrowser中的html文本