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指针建立为树,表示父节点是孩子节点的后 ...
随机推荐
- C#break、continue、return、goto
1.break break语句会使运行的程序立即退出包含在其中的最内层循环(结束此次循环且结束该循环控制体)或者switch语句 ; ; j < ; j++) { i++; )break; Co ...
- CSS FIXED porn javhd
CSS position property - W3Schools W3Schools › cssref › pr_class_position Definition and Usage. The p ...
- RabbitMQ远程访问配置
1 首先创建一个新的账户 并给上Administrator标签 2然后给这个新账户添加虚拟主机访问权限 3在windows 下的 rabbitmq安装文件下的etc文件下的配置文件添加以下 [ ...
- ubuntu12修改ulimit
第一步:配置/etc/security/limits.confsudo vim /etc/security/limits.conf文件尾追加 * hard nofile 40960* soft nof ...
- PHP 类和继承
//定义一个超类 //public 和 protectd属性和方法可以继承,private不可继承. class A{ public $a =0; private $b = 1; protected ...
- DIV CSS布局中position属性用法深入探究
本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...
- javascript进阶——Ajax
统的Web 页面和应用中,用户每点击页面上的某个部分,浏览器就会向服务器发出一个请求,等待服务器做出响应,然后返回一个完整新网页,但在大多数情况下用户不得不忍受页面闪烁和长时间的等待.随着Web技术的 ...
- Python环境搭建(windows)
Python环境搭建(windows) Python简介 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式计算机编程语言,具有近二十年的发展历史,成 ...
- Codeforces Round #345 (Div. 1) A. Watchmen 模拟加点
Watchmen 题意:有n (1 ≤ n ≤ 200 000) 个点,问有多少个点的开平方距离与横纵坐标的绝对值之差的和相等: 即 = |xi - xj| + |yi - yj|.(|xi|, |y ...
- 【JPA】两种不同的实现jpa的配置方法
两种不同的实现jpa的配置方法 第一种: com.mchange.v2.c3p0.ComboPooledDataSource datasource.connection.driver_class=co ...