2015-10-06 21:49:54


这题说的是个给了一个数组,然后删除任意起点的一个连续的L个数,然后求最长递增子序列《是递增,不是非递减》,用一个树状数组维护一下就ok了

#include <iostream>
#include <algorithm>
#include <string.h>
#include <cstdio>
#include <cmath>
using namespace std;
const int maxn=;
int A[maxn],B[maxn];
int dp[maxn][];
int NUM[maxn][],N;
int lowbit(int x)
{
return x&(-x);
}
void add(int loc, int v,int op)
{
while(loc<=N)
{
NUM[loc][op]=max(v,NUM[loc][op]);
loc+=lowbit(loc);
}
}
int sum(int loc, int op)
{
int ans=;
while(loc>)
{
ans=max(ans,NUM[loc][op]);
loc-=lowbit(loc);
}
return ans;
}
int main()
{
int cas;
scanf("%d",&cas);
for(int cc=; cc<=cas; cc++)
{
int n,L;
scanf("%d%d",&n,&L); int id=;
for(int i=; i<n; i++)
{
scanf("%d",&A[i]);
B[i]=A[i];
if(A[i]<A[id])id=i;
}
if(L==n){
printf("Case #%d: %d\n",cc,);continue;
}
B[n]=A[id]-;
sort(B,B+(n+));
N=unique(B,B+(n+))-B;
memset(NUM,,sizeof(NUM));
for(int i=; i<n; i++){
A[i]=lower_bound(B,B+N,A[i])-B+;
}
int ans=;
for(int i=; i<n; i++)
{
dp[i][]=dp[i][]=;
int Loc=A[i];
int AA=sum(Loc-,);
dp[i][]=AA+;
AA=sum(Loc-,);
dp[i][]=max(dp[i][],AA+);
if(n-L>i){
dp[i][]=sum(Loc-,)+;
}
if(i-L>=){
add(A[i-L],dp[i-L][],);
}
if(i>=L){
add(A[i],dp[i][],);
}
if(n-L>i){
add(A[i],dp[i][],);
}
ans=max(max(dp[i][],dp[i][]),ans);
}
printf("Case #%d: %d\n",cc,ans);
}
return ;
}

hdu5489 树状数组+dp的更多相关文章

  1. codeforces 597C (树状数组+DP)

    题目链接:http://codeforces.com/contest/597/problem/C 思路:dp[i][j]表示长度为i,以j结尾的上升子序列,则有dp[i][j]= ∑dp[i-1][k ...

  2. hdu 4622 Reincarnation trie树+树状数组/dp

    题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串. 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 网上也有用后缀数组搞得. 思路 ...

  3. Codeforces 597C. Subsequences (树状数组+dp)

    题目链接:http://codeforces.com/contest/597/problem/C 给你n和数(1~n各不同),问你长为k+1的上升自序列有多少. dp[i][j] 表示末尾数字为i 长 ...

  4. HDU2227Find the nondecreasing subsequences(树状数组+DP)

    题目大意就是说帮你给出一个序列a,让你求出它的非递减序列有多少个. 设dp[i]表示以a[i]结尾的非递减子序列的个数,由题意我们可以写出状态转移方程: dp[i] = sum{dp[j] | 1&l ...

  5. CodeForces - 314C Sereja and Subsequences (树状数组+dp)

    Sereja has a sequence that consists of n positive integers, a1, a2, ..., an. First Sereja took a pie ...

  6. HDU 6348 序列计数 (树状数组 + DP)

    序列计数 Time Limit: 4500/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

  7. [Codeforces261D]Maxim and Increasing Subsequence——树状数组+DP

    题目链接: Codeforces261D 题目大意:$k$次询问,每次给出一个长度为$n$的序列$b$及$b$中的最大值$maxb$,构造出序列$a$为$t$个序列$b$连接而成,求$a$的最长上升子 ...

  8. 【XSY2727】Remove Dilworth定理 堆 树状数组 DP

    题目描述 一个二维平面上有\(n\)个梯形,满足: 所有梯形的下底边在直线\(y=0\)上. 所有梯形的上底边在直线\(y=1\)上. 没有两个点的坐标相同. 你一次可以选择任意多个梯形,必须满足这些 ...

  9. hdu5125 树状数组+dp

     hdu5125 他说的是n个人每个人都有两个气球a,b,气球各自都有相应的体积,现在让他们按照序号排列好来,对他们的a气球体积值计算最长上升子序列,对于这整个排列来说有m次机会让你将a气球替换成b气 ...

随机推荐

  1. LeetCode 693 Binary Number with Alternating Bits 解题报告

    题目要求 Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits w ...

  2. Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰

    Javascript面向对象编程(二):构造函数的继承   作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...

  3. 【python基础】hmac

    [微语]不应当急于求成,应当去熟悉自己的研究对象,锲而不舍,时间会成全一切.凡事开始最难:然而最难的是何以善终 通过哈希算法,我们可以验证一段数据是否有效,方法就是对比该数据的哈希值,例如,判断用户口 ...

  4. kali蓝牙连接

    http://blog.csdn.net/hailangnet/article/details/47723181 http://www.aiuxian.com/article/p-3012084.ht ...

  5. Nand Flash 裸机程序

    硬件平台 :JZ2440 实现功能:初始化 Nand Flash 和 sdram,并将代码从 Nand Flash 拷贝到 sdram. start.s      --> 上电初始化 nand ...

  6. ros 运行rviz时出现 QXcbConnection: XCB error: 148 错误 解决方法

    出现上述问题的原因: 1.由于使用了nvc远程控制下位机: 2.rviz是一个基于opengl开发的图形插件,需要使用理论的屏幕参数(thetis' screen),由于使用了teamviewer会导 ...

  7. Java 基础 常用API (System类,Math类,Arrays, BigInteger,)

    基本类型包装类 基本类型包装类概述 在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们需要把字符串数据,根据需求转换成指定的基本数据类型,如年龄需要转换成int类 ...

  8. python字符串前面加u,r,b的含义

    转自:https://blog.csdn.net/u010496169/article/details/70045895 u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串, ...

  9. jsp内置对象学习记录

    1.session,是一个会话保留在服务器端的对象(默认保留时间为30分钟),所以我们可以在session里面放用户信息以便后续的访问便利(缺点:cookie劫持,导致用户数据泄露).案例:(1)同个 ...

  10. java获取请求的url地址

    1.获取全路径request.getRequestURL(); //得到http://localhost:8888/CRM/loginController/login 2.获取协议名和域名reques ...