题目地址:HDU 4521

基本思路是DP。找前面数的最大值时能够用线段树来维护节省时间。

因为间隔要大于d。

所以能够用一个队列来延迟更新,来保证每次询问到的都是d个之前的。

代码例如以下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm> using namespace std;
#define lson l, mid, rt<<1
#define rson mid+1, r, rt<<1|1
#define LL __int64
const int INF=0x3f3f3f3f;
struct node
{
int maxv, num;
};
int maxv[400000], a[1100000];
int q_maxv;
void PushUp(int rt)
{
maxv[rt]=max(maxv[rt<<1],maxv[rt<<1|1]);
}
void Update(int p, int x, int l, int r, int rt)
{
if(l==r)
{
maxv[rt]=p;
return ;
}
int mid=l+r>>1;
if(x<=mid) Update(p,x,lson);
else Update(p,x,rson);
PushUp(rt);
}
void Query(int ll, int rr, int l, int r, int rt)
{
if(ll<=l&&rr>=r)
{
q_maxv=max(q_maxv,maxv[rt]);
return ;
}
int mid=l+r>>1;
if(ll<=mid) Query(ll, rr, lson);
if(rr>mid) Query(ll,rr,rson);
}
int main()
{
int n, d, i, j, top;
node tmp, now;
while(scanf("%d%d",&n,&d)!=EOF)
{
queue<node>q;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
memset(maxv,0,sizeof(maxv));
for(i=0;i<n;i++)
{
q_maxv=0;
if(a[i])
Query(0,a[i]-1,0,100000,1);
now.maxv=q_maxv;
now.num=a[i];
q.push(now);
if(i>=d)
{
tmp=q.front();
q.pop();
Update(tmp.maxv+1,tmp.num,0,100000,1);
}
}
while(!q.empty())
{
tmp=q.front();
q.pop();
Update(tmp.maxv+1,tmp.num,0,100000,1);
}
printf("%d\n",maxv[1]);
}
return 0;
}

HDU 4521 小明系列问题——小明序列 (线段树维护DP)的更多相关文章

  1. hdu 4521 小明系列问题——小明序列 线段树+二分

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Pro ...

  2. hdu 4521 小明系列问题——小明序列(线段树+DP或扩展成经典的LIS)

    小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  3. hdu 4521 小明系列问题——小明序列(线段树 or DP)

    题目链接:hdu 4521 本是 dp 的变形,却能用线段树,感觉好强大. 由于 n 有 10^5,用普通的 dp,算法时间复杂度为 O(n2),肯定会超时.所以用线段树进行优化.线段树维护的是区间内 ...

  4. 小明系列问题――小明序列(LIS)

    小明系列问题――小明序列 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit ...

  5. hdu----(4521)小明系列问题——小明序列

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  6. 小明系列问题——小明序列(Lis 相距大于d的单调上升子序列)

    小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  7. 2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)

    小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...

  8. hdu4521 小明系列问题——小明序列

    Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission ...

  9. 线段树维护区间前k小

    线段树维护区间前k小 $ solution: $ 觉得超级钢琴太麻烦?在这里线段树提供一条龙服务 . 咳咳,开始讲正题!这道题我们有一个和超级钢琴复杂度一样 $ ~O(~\sum x\times lo ...

随机推荐

  1. linux php文件include失败 一个很神奇的问题

    1. html生成失败,权限问题 前天用php生成模板,在windows上开发,include文件,读缓存写文件,顺风顺水,晚上写完后传到linux上html生成失败,发现文件和文件夹都没生成,网上查 ...

  2. Redis中各种方法的使用

    ①set ; i< ; i++) { // 不可以重复添加数据 client.AddItemToSet(KKey, "dong升-" + i); } client.Remov ...

  3. 经常会用到的js函数

    //获取样式function getStyle(obj,attr){ if(obj.currentStyle){  return obj.currentStyle[attr];  }else{  re ...

  4. Streams Studio配置Build options

    Defining build options You can change the build options of the internal builder for building an SPL ...

  5. win7中注册tomcat服务

    非安装版tomcat下载后,在bin文件夹会有一个startup.bat文件,运行该文件即可启动tomcat了.不过在服务器配置tomcat的话,就通常需要注册为服务. 在/bin文件下还有tomca ...

  6. hdu 4545 魔法串 2013金山西山居创意游戏程序挑战赛——初赛(1)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4545 这题太坑了,小明的串可以任意删掉某个字符 这句话不知道大家是怎么理解的,我觉得应该是能够删除其中 ...

  7. c++ 静态多态与动态多态

    多态polymorphism是指具有多种形态的情况,它能根据单一的标记关联不同的行为.多态是面向对象程序设计的基础.在面向对象程序设计中的多态是一种运行时的多态.C++中有两种多态,称为动多态(运行时 ...

  8. Candy----HDU4465----数学题

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4465 题目意思: 有两个箱子,每个箱子装有N个糖果 打开第一个箱子的概率是P,另外一个就是1-P 当小 ...

  9. 理解Android的layout和measure

    在Android UI开发中,总会有情况需要自定义View和View Group. 什么是View?就是Android中一个基本视图单位,一个Button是一个view, 一个Layout, 也是一个 ...

  10. 自己定义控件-GifView

    一.描写叙述 显示Gif 的View 原理是用 MediaPlayer 实现的 二.源代码 https://github.com/mentor811/Demo_GifView [ 声明:版权全部,欢迎 ...