HDU 1950 Bridging signals (DP)
2015-09-26 09:44
260 查看
职务地址:HDU 1950
这题是求最长上升序列,可是普通的最长上升序列求法时间复杂度是O(n*n)。显然会超时。于是便学了一种O(n*logn)的方法。也非常好理解。
感觉还用到了一点贪心的思想。
详细的见这篇博客吧,写的非常通俗易懂。传送门
代码例如以下:
这题是求最长上升序列,可是普通的最长上升序列求法时间复杂度是O(n*n)。显然会超时。于是便学了一种O(n*logn)的方法。也非常好理解。
感觉还用到了一点贪心的思想。
详细的见这篇博客吧,写的非常通俗易懂。传送门
代码例如以下:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map> #include <set> #include <algorithm> using namespace std; #define LL long long int a[50000], b[50000], len; int bin_seach(int x) { int low=1, high=len, mid, ans; while(low<=high) { mid=low+high>>1; if(b[mid]>=x) {high=mid-1;ans=mid;} else low=mid+1; } return ans; } int main() { int t, n, i, pos; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); } len=0; b[++len]=a[0]; for(i=1;i<n;i++) { if(a[i]>b[len]) { b[++len]=a[i]; } else { pos=bin_seach(a[i]); b[pos]=a[i]; } } printf("%d\n",len); } return 0; }
相关文章推荐
- Sqlite
- ThinkPHP+DWZ(xhEditor)上传图片
- 内存泄漏检查工具valgrind使用方法
- leetcode 270: Closest Binary Search Tree Value
- JVM/JDK/JRE/IDE—区别
- UVa 11729:Commando War(贪心)
- TYVJ P1577 泥泞的道路
- linux内核设计艺术---学习笔记(Ⅰ )
- SdCard操作
- Win7无法同时播放两个声音怎么办 Win7无法同时播放两个声音的应对措施
- poj_3628 动态规划
- MongoDB MapReduce 使用
- CMake 问题指南
- 永远不要拿别人跟自己攀比
- 解决Eclipse新建Android工程出错
- cmd删除文件
- msyql执行效率的问题以及常见基础面试题目
- ioctl命令
- 面试题(操作语句)
- 面试题(JVM加载机制)