HDU4521+线段树+dp
题意:在一个序列中找出最长的某个序列。找出的序列满足题中的条件。
关键:对于 第 i 个位置上的数,要知道与之相隔至少d的位置上的数的大小。可以利用线段树进行统计,查询。更新的时候利用dp的思想。
/*
统计某一段内有多少比aim小的数据
在更新的时候利用了dp的思想。
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int maxn = ;
struct node{
int sum,l,r;
}anode[ maxn<< ];
#define left( x ) (x<<1)
#define right( x ) ((x<<1)+1) int data[ maxn ],dp[ maxn ]; void build( int l,int r,int n ){
anode[ n ].l = l;
anode[ n ].r = r;
anode[ n ].sum = ;
if( l==r ) return ;
int mid = (l+r)/;
build( l,mid,left( n ) );
build( mid+,r,right( n ) );
return ;
} void update( int aim_pos,int aim_value,int l,int r,int n ){
if( l==r ){
anode[ n ].sum = aim_value;
return ;
}
int mid = (l+r)/;
if( aim_pos<=mid ) update( aim_pos,aim_value,l,mid,left( n ) );
else update( aim_pos,aim_value,mid+,r,right( n ) );
anode[ n ].sum = max( anode[ left( n ) ].sum,anode[ right( n ) ].sum );
} int query( int a,int b,int l,int r,int n ){
if( a==l&&b==r ){
return anode[ n ].sum;
}
int mid = (l+r)/;
if( b<=mid ) return query( a,b,l,mid,left( n ) );
else if( mid<a ) return query( a,b,mid+,r,right( n ) );
else return max( query( a,mid,l,mid,left( n ) ),query( mid+,b,mid+,r,right( n ) ) );
} int main(){
int n ,d;
while( scanf("%d%d",&n,&d)== ){
memset( dp,,sizeof( dp ));
int maxNum = ;
for( int i=;i<=n;i++ ){
scanf("%d",&data[i]);
maxNum = max( maxNum,data[ i ] );
}
build( ,maxNum, );
int ans = ;
for( int i=;i<=n;i++ ){
if( i-d> )
update( data[ i--d ],dp[ i--d ],,maxNum, );
if( data[ i ]> ) dp[ i ] = query( ,data[ i ]-,,maxNum, )+;
else dp[ i ] = ;
ans = max( ans,dp[ i ]) ;
}
printf("%d\n",ans);
}
return ;
}
HDU4521+线段树+dp的更多相关文章
- Tsinsen A1219. 采矿(陈许旻) (树链剖分,线段树 + DP)
[题目链接] http://www.tsinsen.com/A1219 [题意] 给定一棵树,a[u][i]代表u结点分配i人的收益,可以随时改变a[u],查询(u,v)代表在u子树的所有节点,在u- ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- hdu4521(线段树+dp)
传送门:小明系列问题——小明序列 题意:有n个数,求间距大于d的最长上升序列. 分析:dp[i]表示在i点以a[i]结束距离大于d的最长上升序列,然后每更新到第i点时,取i-d之前小于a[i]的数为结 ...
- lightoj1085 线段树+dp
//Accepted 7552 KB 844 ms //dp[i]=sum(dp[j])+1 j<i && a[j]<a[i] //可以用线段树求所用小于a[i]的dp[j ...
- [CF 474E] Pillars (线段树+dp)
题目链接:http://codeforces.com/contest/474/problem/F 意思是给你两个数n和d,下面给你n座山的高度. 一个人任意选择一座山作为起始点,向右跳,但是只能跳到高 ...
- HDU-3872 Dragon Ball 线段树+DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3872 题意:有n个龙珠按顺序放在一列,每个龙珠有一个type和一个权值,要求你把这n个龙珠分成k个段, ...
- Codeforces Round #343 (Div. 2) D - Babaei and Birthday Cake 线段树+DP
题意:做蛋糕,给出N个半径,和高的圆柱,要求后面的体积比前面大的可以堆在前一个的上面,求最大的体积和. 思路:首先离散化蛋糕体积,以蛋糕数量建树建树,每个节点维护最大值,也就是假如节点i放在最上层情况 ...
- Special Subsequence(离散化线段树+dp)
Special Subsequence Time Limit: 5 Seconds Memory Limit: 32768 KB There a sequence S with n inte ...
- hdu 4117 GRE Words (ac自动机 线段树 dp)
参考:http://blog.csdn.net/no__stop/article/details/12287843 此题利用了ac自动机fail树的性质,fail指针建立为树,表示父节点是孩子节点的后 ...
随机推荐
- 【Objective-C】2.自定义构造方法和description方法
1.Student.h 1 #import <Foundation/Foundation.h> 2 3 @interface Student : NSObject { 4 int _age ...
- dede版权信息修改
login:dede-templets-login.htm 系统主页:dede-templets-index2.htm 主体内容在index_body.htm文件 干掉: $(function() ...
- JDBC与ODBC的区别与应用
jdbc是使用通过JAVA的数据库驱动直接和数据库相连,而jdbc-odbc连接的是ODBC的数据源,真正与数据库建立连接的是ODBC! 建议使用JDBC直接连接,同时最好使用连接池! JDBC 是 ...
- ubuntu 16.04 chrome flash player 过期
今天手贱更新了系统,发现chrome flash插件过期了 解决方法: 使用全局代理打开 chrome $: google-chrome --proxy-server="socks5://1 ...
- SQL Server调优系列进阶篇 - 深入剖析统计信息
前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQ ...
- Linux中Oracle数据库备份还原
一.备份Oracle数据库 1.使用数据库管理员账户登录 sqlplus system/system@orcl as sysdba; 2.创建备份目录,并指定备份目录(bak_dir)的物理路径 cr ...
- ajax.abort 终止AJAX请求
$(document).ready(function () { var ajax; $('#choice').change(function() ...
- 6.5 k个已排好序链表合并为一个排序链表
1 建立链表(带哨兵位的)2 建立最小堆方法3 合并已排好序的k个链表 typedef int DataType; //建立链表 class Link { private: struct Node { ...
- 安卓热更新之Nuwa实现步骤
安卓热更新之Nuwa实现步骤 最近热更新热修复的功能在安卓应用上越发火热,终于我的产品也提出了相应的需求. 经过两天的研究,搞定了这个功能,在这里还要多谢大神们的博客,大神们的原理分析很到位,不过对于 ...
- 在Mac OS X中使用VIM开发STM32(2)
本文原创于http://www.cnblogs.com/humaoxiao,非法转载者请自重! 在我先前的博文⎣在Mac OS X中使用VIM开发STM32(1)⎤中,我们安装完成了MACVIM,这一 ...