转载自:http://blog.csdn.net/lwt36/article/details/48774103

题意:

给出一个数列,在其中删除连续的L个数字,使得剩余的数字LIS最大,输出此LIS。

思路:

nlogn的LIS+线段树。

代码:

//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <algorithm>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <string>
#include <set>
#include <vector>using namespace std;
#define pr(x) cout << #x << " = " << x << "  "
#define prln(x) cout << #x << " = " << x << endl
const int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;int n, L, a[N], all[N];
int f[N], g[N], h[N];int maxv[N << 2];
void update(int o, int v, int l, int r, int rt) {if(l == r) {maxv[rt] = max(maxv[rt], v);return;}int m = l + r >> 1;if(o <= m) update(o, v, l, m, rt << 1);else update(o, v, m + 1, r, rt << 1 | 1);maxv[rt] = max(maxv[rt << 1], maxv[rt << 1 | 1]);
}int query(int L, int R, int l, int r, int rt) {if(L <= l && r <= R) return maxv[rt];int m = l + r >> 1, ret = -INF;if(L <= m) ret = max(ret, query(L, R, l, m, rt << 1));if(R > m) ret = max(ret, query(L, R, m + 1, r, rt << 1 | 1));return ret;
}int main() {
#ifdef LOCALfreopen("in.txt", "r", stdin);
//  freopen("out.txt","w",stdout);
#endifios_base::sync_with_stdio(0);int t; scanf("%d", &t);int kase = 0;while(t--) {scanf("%d%d", &n, &L);for(int i = 1; i <= n; ++i) {scanf("%d", a + i);all[i] = a[i];}sort(all + 1, all + 1 + n);int m = unique(all + 1, all + 1 + n) - all - 1;memset(h, 0x3f, sizeof h);for(int i = 1; i <= n; ++i) {int k = lower_bound(h + 1, h + 1 + n, a[i]) - h;f[i] = k;h[k] = a[i];}memset(h, 0x3f, sizeof h);for(int i = n; i; --i) {int k = lower_bound(h + 1, h + 1 + n, -a[i]) - h;g[i] = k;h[k] = -a[i];}int ans = 0;a[n + 1] = INF; g[n + 1] = 0;memset(maxv, 0, sizeof maxv);//delete [i-l,i-1] length:l   [0,i-l-1]->maxvfor(int i = L + 1; i <= n + 1; ++i) {int o = lower_bound(all + 1, all + 1 + m, a[i]) - all;ans = max(ans, query(0, o - 1, 0, m, 1) + g[i]);o = lower_bound(all + 1, all + 1 + m, a[i - L]) - all; //插入一个新的if(i <= n) update(o, f[i - L], 0, m, 1);}printf("Case #%d: %d\n", ++kase, ans);}return 0;
}

hdu5489(2015合肥网络赛F题)相关推荐

  1. hdu5455(2015沈阳网络赛F题)

    题意: 给出一个串,问用题中定义的那些串来组成这个串最少要用多少个. 思路: 没啥说的,注意一下输入的串中可能出现除了c和f的字母. 代码: #include<cstdio> #inclu ...

  2. hdu5492(2015合肥网络赛I题)

    题意: n*m的格子,每个格子有权值,我们要从左上角走到右下角,只能向下走或者向右走,求走到终点走过的格子的方差的最小值. 思路: 被这题坑了,我还是太蠢. 我们可以暴力(∑Ai)^2,取最优就好了. ...

  3. hdu5442(2015长春网络赛F题)

    题意: 给出一个字符串,只由'a'~'z'组成,字符串是一个首尾相接的串.我们要找到一个起点,顺时针或者逆时针的读这个串,找到字典序最大的读法,如果有多种,输出起点坐标小的那个,如果起点坐标一样,输出 ...

  4. hdu5491(2015合肥网络赛H题)

    题意: 给出三个数字D.s1和s2,用L来表示D的二进制表示中1的个数,L在区间[s1,s2]中,我们要找到离D最近的并且大于D的一个数字,且这个数字的L也落在区间[s1,s2]中. 思路: 一直超时 ...

  5. 2017acm乌鲁木齐赛区网络赛F题tarjan缩点

    poj1236是问把一棵树变成强联通分量,于是答案就是rudu为0的和出度为0的最大值,因为假设入度为0的多一些,先每个出度为0的连接一个入度为0的,那么还剩一些入度为0的,这时候入度为0的随意连接一 ...

  6. hihoCoder1228(2015北京网络赛B题)

    题意: 给出一个文本编辑器的容量,给出老板输入的字符串,小写字母代表文本,大写字母代表命令: L:光标左移: R:光标右移: S:在insert模式和另一个输入模式中切换: D:删除光标后面的一个字符 ...

  7. 2015北京网络赛 G题 Boxes bfs

    Boxes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc2015beijingonl ...

  8. hihoCoder 1227 2015 北京网络赛 A题

    题意: 给定m个点,然后从这m个点里找到一个点作为圆心,求一个最小的半径使得圆内刚好有n个点,没有压线的点. 思路: 预处理一下各点间的距离,暴力枚举圆心,然后找到排序后的第n个判断即可.坑点:n&g ...

  9. hihoCoder1233(2015北京网络赛H题)

    转载自:http://blog.csdn.net/queuelovestack/article/details/48625899 题意: 有n个卡槽,放有体积不同的n个空盒子,每次你可以移动一个空盒子 ...

最新文章

  1. MySQL · 引擎介绍 · Sphinx源码剖析(三)
  2. 下一个十年,AI将在这10大领域颠覆世界!
  3. OpenFire、Spark、Smack介绍
  4. linux tee 命令 输出的同时写入文件
  5. Ubuntu下 Oracle sqldeveloper中文目录、文件,select查询结果中:中文乱码
  6. 写了本机器学习入门书
  7. nginx 1.4.3能直接升到1.8.1吗
  8. 知乎推荐算法工程师面经
  9. IPv6带给互联网的新契机
  10. 主席树 POJ2104
  11. 设计模式-第四篇之代理模式
  12. call_user_func_array 调用回调函数
  13. 菜鸟教程Python教程100例合集
  14. 小熊学Java第六天
  15. MATLAB06:数字图像处理
  16. 以前手机应用java咖啡_作为编程语言的“java”怎么就成了咖啡的代称?
  17. 解决Redis manger 连接不上linux redis的问题
  18. z590和b550 哪个好
  19. C语言中对字符串的加密和解密
  20. 软件测试:Alpha测试与beta测试区别

热门文章

  1. 科大星云诗社动态20210419
  2. [C++学习笔记]C++常见问题大全(一)
  3. 云炬Android开发笔记 14 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
  4. button 样式_实战PyQt5: 111-可以使用QSS样式表的部件
  5. [scala-spark]9. RDD创建操作
  6. 用存储过程还原数据库
  7. C语言使用fopen的两点注意事项
  8. The template root requires exactly one element.
  9. 【三分钟刷一题力扣】移除元素
  10. Spring Session 的两种刷新模式-RedisFlushMode