BZOJ4527: K-D-Sequence 线段树
别人家的题解。
#include<bits/stdc++.h>
#define N 200005
#define M (l+r>>1)
#define P (k<<1)
#define S (k<<1|1)
#define K l,r,k
#define L l,M,P
#define R M+1,r,S
#define Z \
int l=0,int r=n-1,int k=1
using namespace std;
int n,z,d;
typedef int seg[N<<2];
seg s[2],t[2],e;
void apply(int i,int d,Z){
s[i][k]=d;
t[i][k]=d+l;
e[k]=d+t[i^1][k];
}
void devolve(Z){
for(int i=0;i!=2;++i)
if(s[i][k]!=INT_MIN){
apply(i,s[i][k],L);
apply(i,s[i][k],R);
s[i][k]=INT_MIN;
}
}
void update(int k){
for(int i=0;i!=2;++i)
t[i][k]=min(
t[i][P],t[i][S]);
e[k]=min(e[P],e[S]);
}
void change(
int i,int d,int s,int t,Z){
if(s==l&&t==r)
apply(i,d,K);
else{
devolve(K);
if(t<=M)
change(i,d,s,t,L);
else if(s>M)
change(i,d,s,t,R);
else{
change(i,d,s,M,L);
change(i,d,M+1,t,R);
}
update(k);
}
}
int query(int s,int t,Z){
static int d;
return s==l&&t==r
&&e[k]>z?-1:l==r?l
:(devolve(K),
t<=M?query(s,t,L)
:s>M?query(s,t,R)
:~(d=query(s,M,L))
?d:query(M+1,t,R));
}
typedef int ds[N];
ds f,a,q,u,v,p;
typedef pair<int,int> vec;
vec b;
void foo(){
int s=*min_element(a,a+n);
for(int i=0;i!=n;++i)
a[i]-=s;
set<int> t;
for(int i=0,j=0;i!=n;++i){
while(t.count(a[i])
||a[i]%d!=a[j]%d)
t.erase(a[j++]);
f[i]=j;
t.insert(a[i]);
}
for(int i=0,j=0,k=0;
k!=n;++k,++z){
a[u[i+1]=k]/=d;
while(i&&a[p[i]]>a[k])
--i;
p[++i]=v[j+1]=k;
change(0,-a[k],u[i],k);
while(j&&a[q[j]]<a[k])
--j;
q[++j]=k;
change(1,a[k],v[j],k);
int s=query(f[k],k);
b=max(b,vec(k-s+1,-s));
}
}
void bar(){
for(int i=0;i!=n;++i){
int j=i;
while(i+1!=n&&a[i]==a[i+1])
++i;
b=max(b,vec(i-j+1,-j));
}
}
int main(){
scanf("%d%d%d",&n,&z,&d);
for(int i=0;i!=n;++i)
scanf("%d",a+i);
(d?foo:bar)();
printf("%d %d\n",1-b.second,
b.first-b.second);
}
BZOJ4527: K-D-Sequence 线段树的更多相关文章
- 2016暑假多校联合---Rikka with Sequence (线段树)
2016暑假多校联合---Rikka with Sequence (线段树) Problem Description As we know, Rikka is poor at math. Yuta i ...
- Wow! Such Sequence!(线段树4893)
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸
D. The Child and Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...
- hdu4893Wow! Such Sequence! (线段树)
Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...
- HDU 6047 Maximum Sequence(线段树)
题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=6047 题目: Maximum Sequence Time Limit: 4000/2000 MS (J ...
- Codeforces 438D The Child and Sequence - 线段树
At the children's day, the child came to Picks's house, and messed his house up. Picks was angry at ...
- hdu 4893 Wow! Such Sequence!(线段树)
题目链接:hdu 4983 Wow! Such Sequence! 题目大意:就是三种操作 1 k d, 改动k的为值添加d 2 l r, 查询l到r的区间和 3 l r. 间l到r区间上的所以数变成 ...
- hdu-5805 NanoApe Loves Sequence(线段树+概率期望)
题目链接: NanoApe Loves Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 ...
- Codeforces 486E LIS of Sequence(线段树+LIS)
题目链接:Codeforces 486E LIS of Sequence 题目大意:给定一个数组.如今要确定每一个位置上的数属于哪一种类型. 解题思路:先求出每一个位置选的情况下的最长LIS,由于開始 ...
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间求和+点修改+区间取模
D. The Child and Sequence At the children's day, the child came to Picks's house, and messed his h ...
随机推荐
- javascript代码片段
DOMReady函数,只要DOM结构加载完成即可,不必等待所有资源加载完成,节约时间,"DOMContentLoaded"在H5中被标准化 var DOMReady=functio ...
- iOS--cocopod升级新版本
上面那个也可安装.cocopod
- 用自己的话描述wcf中的传输安全与消息安全的区别(三)
消息交换安全模式 PS:很多书上把transfer security和transport security都翻译成“传输安全”,这样易混淆.我这里把transfer说成消息交换安全. 安全的含义分为验 ...
- display~
- 了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
在之前的两篇文章(<EmptyResult & ContentResult>和<FileResult>)我们剖析了EmptyResult.ContentResult和F ...
- [转]跟我一起学extjs5(02--建立工程项目)
原文地址:http://blog.csdn.net/jfok/article/details/35569057 目录(?)[+] 跟我一起学extjs5(02--建立工程项目) 我们先建立一个java ...
- iOS开发小技巧--学会包装控件(有些view的位置由于代码或系统原因,位置或者尺寸不容易修改或者容易受外界影响)
一.百思项目中遇到了两处这样的问题, 第一处 - 是评论界面的headerView,由于直接把自己搞的xib加载了放在了那里,xib中setFrame写了好多-= +=,每次滚动的时候,会频繁调用x ...
- 简单的JS控制button颜色随点击更改
先上效果图: 默认“今日”是选中状态,是行内样式: <button type="button" id="today" class="btn-li ...
- yum命令安装mysql
linux下使用yum安装mysql,以及启动.登录和远程访问. 1.安装 查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql* 查看有没 ...
- sublime text 如何设置”在浏览器浏览“的快捷键
sublime text编辑器极其强大 ,但在刚开始用的时候,每次在浏览器中查看非得右键鼠标----”open in browser“,着实觉得麻烦....百度之,上面的方法有很多,但是根据我自己的经 ...