当前位置: 首页 > news >正文

[题解]P3503 [POI 2010] KLO-Blocks

P3503 [POI 2010] KLO-Blocks

一个区间能做到高度全部 \(\ge k\),当且仅当该区间的平均值 \(\ge k\)

于是我们为每个 \(a_i\) 减去 \(k\),再求出其前缀和数组 \(s\)

问题转化为求:

\[\large \max\limits_{l\le r,s_r-s_{l-1}\ge 0} (r-l+1) \]

暴力可以做到 \(O(n^2)\) 的时间复杂度,考虑优化。

我们发现,若 \(i<j\),且 \(s_i\le s_j\),那么 \(i+1\) 作左端点一定不劣于 \(j+1\) 作左端点;同理,此时 \(j\) 作右端点一定不劣于 \(i\) 作右端点。

换句话说,我们可以规定,只有前缀最小值处才能作为 \(l-1\),只有后缀最大值处才能作为 \(r\)

我们可以用两个单调栈来维护这些左右端点。

根据上面的分析,可知在下标升序的情况下,所有可能的左右端点均是按 \(s\) 单减的。

另外一种方法是仅存储左端点,然后从后往前枚举右端点,显然前一种方法中参与统计的答案是此做法的子集,所以仍然是正确的。

时间复杂度均为 \(O(nm)\)

写法 $1$ - R234517631
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,m,a[N],s[N],sl[N],sr[N],tl,tr;
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];while(m--){int k,ans=tl=tr=0;cin>>k;for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i]-k;sl[++tl]=0;//l-1=0 也要算入for(int i=1;i<=n;i++) if(s[i]<s[sl[tl]]) sl[++tl]=i;for(int i=n;i;i--) if(!tr||s[i]>s[sr[tr]]) sr[++tr]=i;for(int i=1,j=tr;i<=tl;i++){for(;j&&s[sl[i]]<=s[sr[j]];j--) ans=max(ans,sr[j]-sl[i]);}cout<<ans<<" ";}return 0;
}
写法 $2$ - R234266797
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10;
int n,m,a[N],s[N],st[N],top;//st 存储 l-1
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];int k,ans;while(m--){cin>>k;ans=0;st[top=1]=0;//l-1=0 也要算入for(int i=1;i<=n;i++){s[i]=s[i-1]+a[i]-k;if(s[i]<s[st[top]]) st[++top]=i;}for(int i=n;i;i--){while(top&&s[st[top]]<=s[i]) ans=max(ans,i-st[top--]);}cout<<ans<<" ";}return 0;
}
http://www.sczhlp.com/news/75474/

相关文章:

  • 我的第一个帖子
  • 敏感词性能提升14倍优化全过程 v0.29.0
  • 手机网站申请嘉兴网络推广平台
  • 服务器网站建设实训报告网站空间根目录
  • 申请域名就可以做网站了吗长沙 外贸网站建设公司
  • 华为手机网站建设策划书蓝色手机网站模板
  • 域名与空间购买后怎么做网站汽车网站建设制作费用
  • 找网站推广公司网站做地图地址
  • 做网站用python好还是PHP好建设股票网站
  • 上海php网站建设网站制作学什么软件
  • 人才引进从事网站建设网站开发建设付款方式
  • 网站建设的相关技术方案手机主页网站
  • 我曹,我彻底怒了
  • 读书目录
  • 关于设计的网站营销方案范文
  • 门户网站为什么衰落三网合一网站建设报价
  • 常州专业网站建设公司做app挣钱还是网站
  • 怎么做钓qq密码网站代理登陆网站
  • 维护一个网站的费用厦门网站免费制作
  • 工信部网站首页温州有没有做鞋的网站
  • 网站开发 技术指标手机网站建设哪家便宜
  • 网站手机版排名seo湖南人文科技学院是几本
  • 做网站的总结学校网站建设讯息
  • 建设一个网站的具体步骤网页制作程序
  • 找人做淘宝网站株洲24小时新闻
  • 做家教的正规网站网站后面的官网是如何做的
  • 网站推广计划方法网站开发实验报告总结
  • 网站上的地图怎么做wordpress文章百万行
  • 商检报关网站建设html网站开发事例教程
  • .net9 openapi是用scalar的ui