HDU 4521(dp)
2015-11-27 16:43
375 查看
// 类似于lis的求解 就是增加了下标之间的差值要满足大于d 有些不同 好好理解了下还是有点模糊的 以后还得再琢磨琢磨 // main.c // example // // Created by Adam on 15/2/2. // Copyright (c) 2015年 Adam. All rights reserved. #include <iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include "algorithm" #include <queue> #include <stack> #define N 100005 #define INF 1<<30 using namespace std; int dp ; int ss ; int a ; int n, k; int Binary_search(int ans) //二分查找加入该元素 可形成的序列的长度 { int l = 1, r = n; while(l <= r) { int mid = (l + r) >> 1; if(ans > ss[mid]) l = mid + 1; else r = mid - 1; } return l; } int main() { while(scanf("%d%d", &n, &k) != EOF) { for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); ss[i] = INF; } int ans = 0; for(int i = 1; i <= n; i++) { dp[i] =Binary_search(a[i]); ans = max(dp[i], ans); int pos = i - k; //将下标为pos的元素更新至ss序列中 if(pos > 0 && ss[dp[pos]] > a[pos]) ss[dp[pos]] = a[pos]; } printf("%d\n", ans); } return 0; }
相关文章推荐
- PostMessage和SendMessage
- JS基础——选项卡列表显示隐藏缩略图(函数传参)
- python学习系列之python装饰器基础(1)
- PHP中对数组的一些常用的增、删、插操作函数总结
- Windows 已在 XXX.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 FiberSecureTerminal.exe 中或它所加载的任何 DLL 中有
- C++primer plus第六版课后编程练习答案7.4
- iOS NSNotification 通知传值
- 如何快速学会在github 上创建一个项目
- 垃圾回收机制的优点和原理,并考虑两种回收机制
- 【LEETCODE】220-Contains Duplicate III
- Stream上传插件(详细解说)
- 菜鸟学Java----局部定义的内部类
- 拿什么守护你的Node.JS进程: Node出错崩溃了怎么办? foreverjs, 文摘随笔
- MyBatis开发-->增删改
- js基础——图片切换实例(函数传参)
- 关于视频的点滴体会
- 关于封装的可执行短信发送文件调用完成实现短信触发发送
- otter(三)--同步过程小解
- Win8系统蓝屏且提示错误代码0x000000ED的故障分析及解决方法
- 随便写点儿