hdu_4521_小明系列问题——小明序列(LIS)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4521
题意:中文题,不解释
题解:这题就是LIS的加强版,可以用二分的nlogn来做,也可以用线段树的nlogn 做这个带间隔的LIS,具体看代码
#include<stdio.h>
#include<algorithm>
#define root 1,n,1
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int N=1e5+;
int n=N-,sum[N<<],a[N],ans,dp[N],d,nn; void update(int x,int k,int l,int r,int rt){
if(l==r){sum[rt]=k;return;}
int m=(l+r)>>;
if(x<=m)update(x,k,ls);
else update(x,k,rs);
sum[rt]=max(sum[rt<<],sum[rt<<|]);
} int query(int L,int R,int l,int r,int rt){
if(L>R)return ;
if(L<=l&&r<=R)return sum[rt];
int m=(l+r)>>,ret=;
if(L<=m)ret=max(ret,query(L,R,ls));
if(m<R)ret=max(ret,query(L,R,rs));
return ret;
} int main(){
while(~scanf("%d%d",&nn,&d)){
F(i,,nn)scanf("%d",a+i);
F(i,,(N<<)-)sum[i]=;ans=;
F(i,,nn){
if(i>d+)update(a[i-d-]+,dp[i-d-],root);
dp[i]=query(,a[i],root)+;
ans=max(dp[i],ans);
}
printf("%d\n",ans);
}
return ;
}
/*
状态方程很好想,dp[i] = max(dp[j] + 1)其中a[i] > a[j] 我们把以第i个元素为结尾的最长上升子序列放到线段树对应值为
a[i]的叶子上(有点hash思想,这是为了保证上升这个特性,查询的
时候方便),当然如果此时的i-d<=1就不用插入了,这时候用不到任
何的前置状态。 需要用我们就插入一次,而且每次插入我们都能保证那个点和当前点i
的距离一定大于d(之前已经空了d个位置),到时就直接去线段树上小
于a[i]的区间找最大值就行了
*/
hdu_4521_小明系列问题——小明序列(LIS)的更多相关文章
- 小明系列问题――小明序列(LIS)
		
小明系列问题――小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
 - hdu----(4521)小明系列问题——小明序列
		
小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tota ...
 - 小明系列问题——小明序列(Lis  相距大于d的单调上升子序列)
		
小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
 - hdu 4521 小明系列问题——小明序列 线段树+二分
		
小明系列问题——小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Pro ...
 - 2018.07.08 hdu4521 小明系列问题——小明序列(线段树+简单dp)
		
小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...
 - hdu  4521  小明系列问题——小明序列(线段树+DP或扩展成经典的LIS)
		
小明系列问题--小明序列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Tot ...
 - HDU  4521    小明系列问题——小明序列    (线段树  单点更新)
		
题目连接 Problem Description 大家都知道小明最喜欢研究跟序列有关的问题了,可是也就因为这样,小明几乎已经玩遍各种序列问题了.可怜的小明苦苦地在各大网站上寻找着新的序列问题,可是找来 ...
 - hdu4521 小明系列问题——小明序列
		
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission ...
 - HDU-4521 小明系列问题——小明序列 间隔限制最长上升子序列
		
题意:给定一个长度为N的序列,现在要求给出一个最长的序列满足序列中的元素严格上升并且相邻两个数字的下标间隔要严格大于d. 分析: 1.线段树 由于给定的元素的取值范围为0-10^5,因此维护一棵线段树 ...
 
随机推荐
- ModelDriven
			
功能: submit 之后显示结果 1.项目结构 2.web.xml <?xml version="1.0" encoding="UTF-8"?> ...
 - cuckoo数据库变更
			
1.cuckoo版本升级 cuckoo默认的数据库为sqlite,默认连接方式为sqlite:///os.path.join(REPORT_ROOT, "db", "cu ...
 - pull类型消息中间件-消息发布者(一)
			
消息集群架构 对于发送方来说的关键几要素 topic 消息的主题,由用户定义.类似于知乎的话题,Producer发送消息的时候需要指定发送到某一个topic下面,Consumer从某一个topic下面 ...
 - phpQuery 无法解析 html 结构
			
有时候解析一段 HTML 代码时 phpQuery 无法解析原因: 可能是缺少类似下面的 meta 信息,在带解析的字符串任意位置添上即可 : <meta http-equiv="Co ...
 - alibaba远程调用框架dubbo原理
			
alibaba有好几个分布式框架,主要有:进行远程调用(类似于RMI的这种远程调用)的(dubbo.hsf),jms消息服务(napoli.notify),KV数据库(tair)等.这个框架/工具/产 ...
 - 2016GIAC全球互联网架构大会日程分享
			
GIAC全球互联网架构大会是中国互联网技术领域一年一度的行业盛事,每年从互联网架构最热门高压应对.云计算.大数据.机器学习.分布式架构等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们 ...
 - 《JS权威指南学习总结--9.2 类和构造函数》
			
内容要点: 例9-1展示了在JS中定义类的其中一种方法.但这种方法并不常用,毕竟它没有定义构造函数,构造函数是用来初始化新创建的对象的. 使用关键字new来调用构造函数会自动创建一个新对象,因此构造函 ...
 - PHP截取中文字符串方法总结
			
<?php @header('Content-type: text/html; charset=UTF-8'); $arr = "sa撒的发dfa多少sfd看sdf得12上24飞452 ...
 - Django中templates使用的补充
			
Django中的模版的使用 1.实例:查询用户信息,在页面显示,并隔行有底色 test1/views文件 def userinfo(request): if request.method=='GET' ...
 - OpenLayer
			
<html> <head> <meta charset="utf-8"> <title>GIS开发样例-V1.0</title ...