[二分优化] hdu 1950 Bridging signals
来源:互联网 发布:淘宝店铺图片 编辑:程序博客网 时间:2024/05/16 10:07
题意:
求最长上升子序列长度。
思路:
由于n比较大,普通的n^2的方法一定会超时
这里引进nlogn的算法。
其实就是因为我们最后只要长度 不要原串
我们可以搜索一遍序列
然后在已经构建的数组内二分查找最小的比v[i]大的数
如果没有则放入长度加一
如果有则更新换小
最后求得的就是最长的长度了
代码:
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"using namespace std;//2014年9月26日10:42:30int ans[123456],v[123456];int main(){ int t; cin>>t; while(t--) { int n; scanf("%d",&n); int i; memset(ans,0,sizeof(ans)); for(i=0;i<n;i++) scanf("%d",&v[i]); int cnt=0; for(i=0;i<n;i++) { int mid,l=0,r=cnt; int ok=-1; while(l<=r) { mid=(l+r)/2; if(ans[mid]>=v[i]) { ok=mid; r=mid-1; } else l=mid+1; } if(ok==-1) ans[cnt++]=v[i]; else ans[ok]=v[i]; } printf("%d\n",cnt); } return 0;}//2014年9月26日11:02:53
0 0
- [二分优化] hdu 1950 Bridging signals
- HDU 1950 POJ 1631 Bridging signals【LIS,二分优化】
- HDU 1950 Bridging signals
- hdu 1950 Bridging signals
- hdu-1950-Bridging signals
- HDU 1950 Bridging signals
- hdu 1950 Bridging signals
- hdu-1950 Bridging signals
- Hdu 1950 bridging signals
- HDU 1950 Bridging signals
- HDU:1950 Bridging signals
- hdu 1950 Bridging signals
- HDU 1950 Bridging signals
- HDU 1950 Bridging signals
- HDU 1950 Bridging signals (DP)
- Hdu 1950 Bridging signals
- HDU 1950 Bridging signals (LIS)
- HDU-1950(LCS)(Bridging signals)
- uva - 11525 Permutation
- Oracle设计规范
- js中的call()方法理解和使用
- easyui 自定义toolbar
- 汉语是世界上唯一一种面向对象的高级语言(转)
- [二分优化] hdu 1950 Bridging signals
- AutoCompleteTextView的使用及属性详解
- [Repost]Selenium ElementNotVisibleException: Cannot click on element
- 《浪潮之巅》 10没落的贵族--摩托罗拉公司
- sdibt 1251 进化树问题
- 在SE11表中检查初始值initial value,ABAP中的初始值和空值
- MMU的使用:地址映射
- Spring bean 集合注入
- Matlab图像处理函数:regionprops