BZOJ5442: [Ceoi2018]Global warming
BZOJ5442: [Ceoi2018]Global warming
https://lydsy.com/JudgeOnline/problem.php?id=5442
分析:
- 等价于后缀加(前缀减也可以转化成后缀加)。
- 求\(L_i\)表示\(i\)这个位置被加了\(x\)与前面的\(lis\),\(R_i\)表示后缀加\(x\)后的\(lis\)。
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define N 400050
int V[N],n,X,a[N],c[N],L[N],R[N],ln,f[N];
void fix(int x,int v) {
for(;x<=ln;x+=x&(-x)) c[x]=max(c[x],v);
}
int inq(int x) {
int re=0;
for(;x;x-=x&(-x)) re=max(re,c[x]); return re;
}
void fix2(int x,int v) {
for(;x;x-=x&(-x)) c[x]=max(c[x],v);
}
int inq2(int x) {
int re=0;
for(;x<=ln;x+=x&(-x)) re=max(re,c[x]); return re;
}
int main() {
scanf("%d%d",&n,&X);
int i;
for(i=1;i<=n;i++) scanf("%d",&a[i]);
for(i=1;i<=n;i++) a[i+n]=a[i]+X;
ln=n<<1;
for(i=1;i<=ln;i++) V[i]=a[i];
sort(V+1,V+ln+1);
int cnt=unique(V+1,V+ln+1)-V-1;
for(i=1;i<=ln;i++) a[i]=lower_bound(V+1,V+cnt+1,a[i])-V;
for(i=1;i<=n;i++) {
L[i]=inq(a[i+n]-1)+1;
f[i]=inq(a[i]-1)+1;
fix(a[i],f[i]);
}
memset(c,0,sizeof(c));
for(i=n;i;i--) {
f[i]=inq2(a[i]+1)+1;
fix2(a[i],f[i]);
}
int ans=0;
for(i=1;i<=n;i++) ans=max(ans,L[i]+f[i]);
printf("%d\n",ans-1);
}
BZOJ5442: [Ceoi2018]Global warming的更多相关文章
- [CEOI2018]Global warming
[CEOI2018]Global warming 题目大意: 给定\(n(n\le2\times10^5)\),你可以将任意\(a_{l\sim r}(1\le l\le r\le n)\)每一个元素 ...
- BZOJ 5442: [Ceoi2018]Global warming
[l,r]+x不如[l,n]+x [l,r]-x不如(r,n)+x 所以等价于只有[l,n]+x 枚举断点树状数组合并 难度在于想到这个贪心 #include<cstdio> #inclu ...
- 10324 Global Warming dfs + 二分
时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description Global warming is a big prob ...
- 【BZOJ4149】[AMPPZ2014]Global Warming 单调栈+RMQ+二分
[BZOJ4149][AMPPZ2014]Global Warming Description 给定一个序列a[1],a[2],...,a[n].请从中选出一段连续子序列,使得该区间最小值唯一.最大值 ...
- bzoj4149: [AMPPZ2014]Global Warming
头都烂了怎么头疼啊 考虑先做出对于一个位置以它作为唯一最小值的最远区间,这个可以单调栈上二分搞出来 那么对于一个位置这个区间而言,一定是选择这个区间的最大数是作为最终的唯一最大数最优的 为什么呢?我们 ...
- Emergency(山东省第一届ACM省赛)
Emergency Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Kudo’s real name is not Kudo. H ...
- Moscow Pre-Finals Workshop 2016. National Taiwan U Selection
A. As Easy As Possible 每个点往右贪心找最近的点,可以得到一棵树,然后倍增查询即可. 时间复杂度$O((n+m)\log n)$. #include <bits/stdc+ ...
- sentence patterns
第四部分 推理题 1.世界上每个角落的每个人都有立场,都有背景,都有推理性,能推理出一个人语言的真意,才成就了真正的推理能力: 2.换言之,如果你能通过一个人的说话推理出其身份职业,你的推理能 ...
- AMPPZ2014
[AMPPZ2014]The Lawyer 记录每天结束的最早的会议以及开始的最晚的会议即可. #include<cstdio> #define N 500010 int n,m,i,d, ...
随机推荐
- 经过两个多月的攻关,终于搞定了live555多线程并稳定压测通过
live555已经发展了十几年了,不得不钦佩作者坚持不懈的奉献和国外的开源生态环境,live555可以说是大部分的安防从业者的入门之选,尤其是在嵌入式或者Linux系统上,其应用还是蛮广泛的,主要是其 ...
- POJ 2092 Grandpa is Famous【水---找出现第二多的数】
链接: http://poj.org/problem?id=2092 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=27454#probl ...
- nginx学习之反向代理篇(六)
在本节,你将学会: --如何根据不同的协议,将请求转发到后端服务器: --修改发送到后端服务器的请求头: --以及配置是否buffering从后端服务器返回来的响应. 1. 将请求转发给后端服务器 当 ...
- Android5.0以后版本把应用移动到SD或者TF卡的方法
由于手机内存较小,才8G,用的时间一久,内部存储就满了,天天删垃圾,WIFI还老断线,终于忍无可忍了,决定把应用移动到SD卡,实践下来,只有少部分App默认支持移动到SD卡,大部分程序不支持只能装在内 ...
- PAT 1063. 计算谱半径(20)
在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界.换言之,对于给定的n个复数空间的特征值{a1+b1i, ..., an+bni},它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模. ...
- 使用JSTL在页面前的空行怎么去除?
解决的方法是:在每个JSP的头上加上一段代码 <%@ page trimDirectiveWhitespaces="true" %>
- C#使用SQL语句时候的万用密码问题
实际上万用密码就是因为SQL里面的语句--是注释,利用bug添加用户名和密码. 例如,用户名为 adada’ or 1=1-- 第一个种写法登录成功了 第二种写法登录失败(正确) 第三种写法登录失败( ...
- oldboyshell编程扩展内容
oldboyshell编程扩展内容一.命令的优先级 命令分为: ==> alias ==> Compound Commands ==> function ==> build_ ...
- appium 移动web样例脚本
简单介绍 这是一个使用appium操作移动端chrome浏览器的样例程序. 样例程序 脚本实现的功能是:打开浏览器-->跳转到百度首页-->输入appium-->点击搜索按钮--&g ...
- Ubuntu15.10下***搭建及GUI客户端安装
1.依赖包安装 sudo apt-get install python-pip python-dev build-essential sudo pip install pip sudo apt-get ...