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的更多相关文章

  1. [CEOI2018]Global warming

    [CEOI2018]Global warming 题目大意: 给定\(n(n\le2\times10^5)\),你可以将任意\(a_{l\sim r}(1\le l\le r\le n)\)每一个元素 ...

  2. BZOJ 5442: [Ceoi2018]Global warming

    [l,r]+x不如[l,n]+x [l,r]-x不如(r,n)+x 所以等价于只有[l,n]+x 枚举断点树状数组合并 难度在于想到这个贪心 #include<cstdio> #inclu ...

  3. 10324 Global Warming dfs + 二分

    时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description Global warming is a big prob ...

  4. 【BZOJ4149】[AMPPZ2014]Global Warming 单调栈+RMQ+二分

    [BZOJ4149][AMPPZ2014]Global Warming Description 给定一个序列a[1],a[2],...,a[n].请从中选出一段连续子序列,使得该区间最小值唯一.最大值 ...

  5. bzoj4149: [AMPPZ2014]Global Warming

    头都烂了怎么头疼啊 考虑先做出对于一个位置以它作为唯一最小值的最远区间,这个可以单调栈上二分搞出来 那么对于一个位置这个区间而言,一定是选择这个区间的最大数是作为最终的唯一最大数最优的 为什么呢?我们 ...

  6. Emergency(山东省第一届ACM省赛)

    Emergency Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Kudo’s real name is not Kudo. H ...

  7. Moscow Pre-Finals Workshop 2016. National Taiwan U Selection

    A. As Easy As Possible 每个点往右贪心找最近的点,可以得到一棵树,然后倍增查询即可. 时间复杂度$O((n+m)\log n)$. #include <bits/stdc+ ...

  8. sentence patterns

    第四部分     推理题 1.世界上每个角落的每个人都有立场,都有背景,都有推理性,能推理出一个人语言的真意,才成就了真正的推理能力: 2.换言之,如果你能通过一个人的说话推理出其身份职业,你的推理能 ...

  9. AMPPZ2014

    [AMPPZ2014]The Lawyer 记录每天结束的最早的会议以及开始的最晚的会议即可. #include<cstdio> #define N 500010 int n,m,i,d, ...

随机推荐

  1. 【BZOJ2337】[HNOI2011]XOR和路径 期望DP+高斯消元

    [BZOJ2337][HNOI2011]XOR和路径 Description 题解:异或的期望不好搞?我们考虑按位拆分一下. 我们设f[i]表示到达i后,还要走过的路径在当前位上的异或值得期望是多少( ...

  2. 【BZOJ4026】dC Loves Number Theory 分解质因数+主席树

    [BZOJ4026]dC Loves Number Theory Description  dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源.    给 ...

  3. 【HTML5开发系列】表单元素

    <form> 创建一个HTML表单 属性: action 表示提交表单时浏览器应该把用户填写的数据发送到什么地方 method 用来指定表单数据发送到服务器的方式.允许值有get和post ...

  4. 【python】将excel转成json

    excel格式如下: 转换后如下 {"BD": 1375.0, "BE": 829.0, "BF": 3.0, "BG" ...

  5. MainWindows

    开发带有菜单栏状态栏等常用windows应用时候使用

  6. 一对多 添加表单 cocoon

    gem 'cocoon' - javascript "cocoon.js" https://note.youdao.com/web/#/file/XCiivnE/note/WEB4 ...

  7. html5 canvas做的图表插件

    用highchart的时候发现它是用svg来画图的,那么用canvas来做怎么样的. 以前做AS图表插件的时候,绘制图画主要用容器的Graphics对象来绘制,而canvas的context和Grap ...

  8. c的详细学习(8)指针学习(二)

    (1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...

  9. 继承、多态——成员变量、成员函数、构造函数(this、super)

    继承 1.继承使用原因: 1.提高了代码的复用性 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性 2.继承注意事项: 千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属 ...

  10. sass表达式前后出现空格

    最近发现一个问题,当我用mixin将px转rem时: @mixin pxToRem($remVal: 1){ font-size: ($remVal/75)rem; }.a { @include px ...