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, ...
随机推荐
- 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元
[BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...
- 【BZOJ4026】dC Loves Number Theory 分解质因数+主席树
[BZOJ4026]dC Loves Number Theory Description dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源. 给 ...
- 【HTML5开发系列】表单元素
<form> 创建一个HTML表单 属性: action 表示提交表单时浏览器应该把用户填写的数据发送到什么地方 method 用来指定表单数据发送到服务器的方式.允许值有get和post ...
- 【python】将excel转成json
excel格式如下: 转换后如下 {"BD": 1375.0, "BE": 829.0, "BF": 3.0, "BG" ...
- MainWindows
开发带有菜单栏状态栏等常用windows应用时候使用
- 一对多 添加表单 cocoon
gem 'cocoon' - javascript "cocoon.js" https://note.youdao.com/web/#/file/XCiivnE/note/WEB4 ...
- html5 canvas做的图表插件
用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...
- c的详细学习(8)指针学习(二)
(1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...
- 继承、多态——成员变量、成员函数、构造函数(this、super)
继承 1.继承使用原因: 1.提高了代码的复用性 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性 2.继承注意事项: 千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属 ...
- sass表达式前后出现空格
最近发现一个问题,当我用mixin将px转rem时: @mixin pxToRem($remVal: 1){ font-size: ($remVal/75)rem; }.a { @include px ...