PKU的Bridging Signals
来源:互联网 发布:炒黄金软件 编辑:程序博客网 时间:2024/05/19 09:03
PKU的Bridging Signals 在0(n*logn)的设计上写的很复杂,无意见看到下面这个程序(by CQF) 受到启发了!! 呵呵
转CQF大牛的算法:
1、建立一个栈stack,清空。{stack[i]表示当前状态下,所有长度为i的子序中最后一个数的最小值}。//这个太漂亮了:cqf是大牛大牛大大牛呀:)
2、按先后顺序循环序列的每一个数,用操作3修改当前状态
3、如果这个数不小栈顶或栈为空就++stack的长度,否则就用二分法找出一个最小的i使得stack[i]>这个数.将stack[i]更新为这个数。{可以用二分法是因为stack是有序的}
4、输出stack的长度。{最长不下子序长度}
#include <cstdio>#include <string>int a[40000], c;int main(){ int m, n, i, k; //freopen("in.txt", "r", stdin); scanf("%d", &m); for(i = 0; i < m; i ++) { memset(a, 0, sizeof(a)); scanf("%d", &n); c = 0; for(k = 0; k < n; k ++) { int t; scanf("%d", &t); if(c == 0 || t > a[c - 1]) a[c ++] = t; else { int l = 0, h = c - 1, mid = (l + h) / 2; while(l < h) { if(a[mid] < t) l = mid + 1; else if(a[mid] > t) h = mid; mid = (l + h) / 2; } a[mid] = t; } //pa(); } printf("%d/n", c); } return 0;}
转自:http://www.cppblog.com/sicheng/archive/2006/10/04/11020.html
留着用它求最长上升子序列
- PKU的Bridging Signals
- PKU的Bridging Signals
- pku 1631 Bridging signals
- [动态规划]PKU Bridging signals
- PKU 1631 Bridging signals 二分查找
- pku 1631 Bridging signals nLogn效率的最长上升子序列
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging Signals
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging signals
- Bridging signals
- 服务器安装
- java中synchronized用法
- 简单flash代码实现连连看
- Carbide.C++ import工程时 失败:overlaps the location of another project
- 一种文件队列
- PKU的Bridging Signals
- IEEE会议模板
- 如何升级禅道
- silverlight 运行问题
- Oracle 11.2.0在Windows Server 2003上安装的问题
- 采用jacob读取并在网页中显示ppt、word、excel
- perl访问配置文件
- 模版模式(template method pattern)(泡茶和咖啡)
- 跟我一起写udev规则