HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)
定义f[i]表示以i为开头往后的最长上升子序列,d[i]表示以i为结尾的最长上升子序列。
先nlogn算出f[i],
从i-L开始枚举f[i],表示假设i在最终的LIS中,往[0,i-L)里找到满足ai>aj中dj值最大的。用dj+f[i]更新。
但是这样会少考虑一种情况,即i-L以后都不在最终的LIS里面,这样一定是以[0~i-L)中的某个结尾的,所以还要用d[j]去更新答案。
#include<bits/stdc++.h>
using namespace std; const int maxn = 1e5+;
int a[maxn];
int g[maxn];
int f[maxn]; const int INF = 0x3f3f3f3f; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int T; scanf("%d",&T);
for(int ks = ; ks <= T; ks++){
int N,L,k ; scanf("%d%d",&N,&L);
for(int i = ; i < N; i++) scanf("%d",a+i);
fill(g+,g+N-L+,-INF);
for(int i = N-; i >= L; i--){
k = lower_bound(g+,g+N-i,a[i],greater<int>())-g;
f[i] = k;
g[k] = a[i];
}
memset(g+,0x3f,sizeof(int)*(N-L));
int ans = ;
for(int i = L; i < N; i++){
k = lower_bound(g+,g+i-L+,a[i])-g;
ans = max(k-+f[i],ans);
k = lower_bound(g+,g+i-L+,a[i-L])-g;
ans = max(k,ans);
g[k] = a[i-L];
}
printf("Case #%d: %d\n",ks,ans);
}
return ;
}
HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)的更多相关文章
- 【二分】【最长上升子序列】HDU 5489 Removed Interval (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5489 题目大意: 一个N(N<=100000)个数的序列,要从中去掉相邻的L个数(去掉整个区间 ...
- 【贪心】【模拟】HDU 5491 The Next (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5491 题目大意: 一个数D(0<=D<231),求比D大的第一个满足:二进制下1个个数在 ...
- HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online
从D+1开始,对于一个数x,区间[x,x+lowbit(x))内的数字的二进制位上1的数量整体来说是单调不减的,因此可快速得出1在这个区间的取值范围. 每次判断一下有没有和[s1,s2]有没有交集,一 ...
- 2015 ACM/ICPC Asia Regional Hefei Online
1001 Monitor the Alpacas 1002 The Relationship in Club 1003 Difference of Clustering 两边离散化.暴力扫C就过了. ...
- 【线段树】HDU 5493 Queue (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5493 题目大意: N个人,每个人有一个唯一的高度h,还有一个排名r,表示它前面或后面比它高的人的个数 ...
- 【动态规划】HDU 5492 Find a path (2015 ACM/ICPC Asia Regional Hefei Online)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5492 题目大意: 一个N*M的矩阵,一个人从(1,1)走到(N,M),每次只能向下或向右走.求(N+ ...
- Hdu 5451 Best Solver (2015 ACM/ICPC Asia Regional Shenyang Online) 暴力找循环节 + 递推
题目链接: Hdu 5451 Best Solver 题目描述: 对于,给出x和mod,求y向下取整后取余mod的值为多少? 解题思路: x的取值为[1, 232],看到这个指数,我的心情是异常崩 ...
- Hdu 5452 Minimum Cut (2015 ACM/ICPC Asia Regional Shenyang Online) dfs + LCA
题目链接: Hdu 5452 Minimum Cut 题目描述: 有一棵生成树,有n个点,给出m-n+1条边,截断一条生成树上的边后,再截断至少多少条边才能使图不连通, 问截断总边数? 解题思路: 因 ...
- Hdu 5442 Favorite Donut (2015 ACM/ICPC Asia Regional Changchun Online 最大最小表示法 + KMP)
题目链接: Hdu 5442 Favorite Donut 题目描述: 给出一个文本串,找出顺时针或者逆时针循环旋转后,字典序最大的那个字符串,字典序最大的字符串如果有多个,就输出下标最小的那个,如果 ...
随机推荐
- maven工程导入eclipse后报错
原因:需要重新部署下tomcat环境 解决方式: 右击->属性:
- Socket 阻塞与非阻塞模式
http://blog.sina.com.cn/s/blog_5d0990c7010115ib.html
- vim配置----YouCompleteMe配置
YouCompleteMe是一个功能极强的自动补全插件,安装这个插件折磨了我好久,找了很多博客查看都无果,最后还是感谢stack overflow.和其它的一些插件相比,YCM能够基于语法来给出相应的 ...
- Keras实现MNIST分类
仅仅为了学习Keras的使用,使用一个四层的全连接网络对MNIST数据集进行分类,网络模型各层结点数为:784: 256: 128 : 10: 使用整体数据集的75%作为训练集,25%作为测试 ...
- 51nod1105(二分)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1105 题意:中文题诶- 思路:直接二分答案,再通过二分找有多少 ...
- 转 BeanShell 简介与学习(一篇就够)
2017年05月17日 21:24:10 金刚龙123 阅读数:5131 标签: BeanShell 更多 个人分类: 开发语言及脚本语言 简介: BeanShell是一种脚本语言,一种完全符 ...
- 通过node.js读取html页面及其页面中引入的css样式
Node 是什么? Node 是一个基于Chrome V8 引擎的JavaScript 运行环境. Node 不是一种独立的语言.Node不是 JavaScript 框架, Node是一个除了浏览器之 ...
- Jenkins+Git+Docker+K8s部署
准备工作 Jenkins已安装 Docker和K8s部署运行成功 代码管理工具使用Git 最近公司项目使用Jenkins+Git+Docker+K8s进行持续化构建部署,这里笔者整理了一下构建部署的相 ...
- IDEA打开项目格式问题
今天遇到一个奇葩问题,从git上面迁maven代码下来后,然后打开文件,加载项目,会导致Modules模块加载的内容不正确,出现这种情况,要么删除原来的模块,重新导入main模块,要么采用第三张图片的 ...
- PostgreSQL - raise函数打印字符串
raise函数 在PostgreSQL中,该函数用于打印字符串,类似于Java中的System.out.println(),Oracle中的dbms_output.put_line(). 用法如下: ...