BZOJ 2086: [Poi2010]Blocks
Description
每次可以将大于 \(k\) 的一个数 \(-1\), 在左边或右边的数 \(+1\) ,问最大能得到多长的序列每个数都大于等于 \(k\) .
Sol
单调栈.
这道题好神啊qwq...思路++
首先如果一段序列满足 \(\sum_{i=l}^ri \geqslant k(r-l+1)\) 那么这个序列就是合法的,把所有的数都 \(-k\) 那么只需要满足非负即可.
然后从前往后找一个单调递减的前缀和序列,如果有小于等于前面的某个位置的前缀和,那么选这个不如选前面大于等于他的那个位置.
然后倒着做,右端点递减的时候,左端点要满足递减才能对答案产生贡献,就用一个栈来维护就行.
Code
/**************************************************************
Problem: 2086
User: BeiYu
Language: C++
Result: Accepted
Time:4768 ms
Memory:20820 kb
****************************************************************/ #include <bits/stdc++.h>
using namespace std; typedef long long LL;
const int N = 1e6+50; LL n,m,ans;
LL a[N],s[N];
int stk[N],top; inline LL in(LL x=0,char ch=getchar()) { while(ch>'9' || ch<'0') ch=getchar();
while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return x; }
int main() {
n=in(),m=in();
for(int i=1;i<=n;i++) a[i]=in();
for(;m--;) {
LL x=in();top=0,ans=0;
for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i]-x;
for(int i=1;i<=n;i++) if(s[i]<s[stk[top]]) stk[++top]=i;
for(int i=n;i>=0;i--) {
while(top && s[i]-s[stk[top-1]]>=0) top--;
ans=max(ans,(LL)i-stk[top]);
}printf("%lld%c",ans,"\n "[m>0]);
}
return 0;
}
BZOJ 2086: [Poi2010]Blocks的更多相关文章
- bzoj 2086 [Poi2010]Blocks 单调栈
[Poi2010]Blocks Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 788 Solved: 356[Submit][Status][Dis ...
- 【BZOJ】2086: [Poi2010]Blocks
题意 \(n(1 \le n \le 1000000)\)个数\(a_i(a_i \le 10^9)\).\(m(1 \le m \le 50)\)次询问,每次给出一个\(k(k \le 10^9)\ ...
- BZOJ2086: [Poi2010]Blocks
题解: 想了想发现只需要求出最长的一段平均值>k即可. 平均值的问题给每个数减去k,判断是否连续的一段>0即可. 然后我们发现如果i<j 且 s[i]<s[j],那么 j 对于 ...
- BZOJ 2080: [Poi2010]Railway 双栈排序
2080: [Poi2010]Railway Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 140 Solved: 35[Submit][Statu ...
- BZOJ 2096: [Poi2010]Pilots( set )
用个set维护就可以水过去...O(NlogN) 应该可以用单调队列O(N).... --------------------------------------------------------- ...
- BZOJ 2096([Poi2010]Pilots-单调队列-差值)
2096: [Poi2010]Pilots Time Limit: 30 Sec Memory Limit: 162 MB Submit: 190 Solved: 97 [ Submit][ ...
- bzoj 2095: [Poi2010]Bridges [混合图欧拉回路]
2095: [Poi2010]Bridges 二分答案,混合图欧拉路判定 一开始想了一个上下界网络流模型,然后发现不用上下界网络流也可以 对于无向边,强制从\(u \rightarrow v\),计算 ...
- BZOJ 2084: [Poi2010]Antisymmetry [Manacher]
2084: [Poi2010]Antisymmetry Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 609 Solved: 387[Submit] ...
- BZOJ 2083: [Poi2010]Intelligence test [vector+二分]
2083: [Poi2010]Intelligence test Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 469 Solved: 227[Su ...
随机推荐
- Mongodb的安装使用
1.下载 最好不要去.com的那个网站下载: 各个版本的下载地址: http://dl.mongodb.org/dl/win32/x86_64 2.压缩包版本: 下载压缩包版本,目录结构如图: ...
- Android开发之延时执行
new Handler().postDelayed(new Runnable() { @Override public void run() { //两秒后执行 startMainActivity() ...
- 红豆电信JS
http://www.hodo170.com/login.jsp 先定义window,再定义RSAUtils=window.RSAUtils || a.RSAUtils; /* * RSA, a su ...
- CentOS升级openssl
才设置了http2,结果蓝狗说我网站不安全,检测一下发现openssl有漏洞,于是准备升级一下openssl 检测网站: www.ssllabs.com/ssltest/analyze.html # ...
- 从list表单序列化后的值转成标准json
var json = {"name":["1111","222"],"sex":["男"," ...
- pymol installation
# download (1) python wget https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi (2) pymol ...
- AutoMapper简单用法
首先在NuGet添加AutoMapper /// <summary> /// AutoMapper帮助类 /// </summary> public static class ...
- JSPatch 使用
1.JSPatch 准备 地址:https://github.com/bang590/JSPatch 框架:libz.1.tbd , JavaScriptCore.framework 2.cocosp ...
- ubuntu用作开发办公平台的完美体验
2016年6月3日 对于使用使用linux操作系统作为办公平台的新手来说很不适应,需要在多种方式中找到自己喜欢,适合自己的方式比较难.摸索了很久终于发现了一个适合我自己的使用方式了.这种方式也适合其他 ...
- 【从html到算法框架】科技白学习计划书
一.学习计划 根据对Web知识层次的梳理,我觉得可以把它分别以技术和思想两个维度进行分类.从技术维度上讲,Web知识有内容.结构.样式.操作(静态的修改与动态的修改(动态,例如使用定时器)).交互(与 ...