题面戳我

Solution

Attention

  • 哇痛苦,一直不会打\(ST\)表,我是真的菜啊qwq
  • 预处理
  Log[1]=0;two[0]=1;
for(int i=2;i<=n;i++)Log[i]=Log[i>>1]+1;
for(int i=1;i<=24;i++)two[i]=two[i-1]*2;
for(int i=1;i<=n;i++)ST[i][0]=i;
for(int i=1;i<=24;i++){
for(int j=0;j+two[i]<=n+1;j++){
ST[j][i]=mina(ST[j][i-1],ST[j+two[i-1]][i-1]);
}
}
  • 我是真的菜qwq

Code

//It is coded by ning_mew on 7.19
#include<bits/stdc++.h>
#define LL long long
using namespace std; const int maxn=5e5+7,inf=(1<<31); int n,k,L,R;
int Log[maxn],ST[maxn][25];
LL sum[maxn],two[25],ans=0;
struct Node{
LL sum;int r,nl,nr,M;
friend bool operator < (const Node &A,const Node &B){return A.sum<B.sum;}
}; priority_queue<Node>Q; int mina(int x,int y){
if(sum[x]<sum[y])return x;return y;
}
int quary(int x,int y){
int kkk=Log[y-x+1];
return mina(ST[x][kkk],ST[y-two[kkk]+1][kkk]);
}
int main(){
scanf("%d%d%d%d",&n,&k,&L,&R);
Log[1]=0;two[0]=1;
for(int i=1;i<=n;i++){scanf("%lld",&sum[i]);sum[i]+=sum[i-1];}
for(int i=2;i<=n;i++)Log[i]=Log[i>>1]+1;
for(int i=1;i<=24;i++)two[i]=two[i-1]*2;
for(int i=1;i<=n;i++)ST[i][0]=i;
for(int i=1;i<=24;i++){
for(int j=0;j+two[i]<=n;j++){
ST[j][i]=mina(ST[j][i-1],ST[j+two[i-1]][i-1]);
}
}
for(int i=L;i<=n;i++){
int l=max(0,i-R),r=i-L;
Node box;box.r=i;box.nl=l;box.nr=r;
box.M=quary(l,r);box.sum=sum[i]-sum[box.M];
Q.push(box);
}
while(k){
k--;Node box=Q.top();Q.pop();
ans+=box.sum;
Node A,B;
if(box.nl<box.M){
A.nl=box.nl;A.nr=box.M-1;A.M=quary(A.nl,A.nr);
A.r=box.r;A.sum=sum[A.r]-sum[A.M];
Q.push(A);
}
if(box.M<box.nr){
B.nl=box.M+1;B.nr=box.nr;B.M=quary(B.nl,B.nr);
B.r=box.r;B.sum=sum[B.r]-sum[B.M];
Q.push(B);
}
}printf("%lld\n",ans);
return 0;
}

博主蒟蒻,随意转载。但必须附上原文链接:http://www.cnblogs.com/Ning-Mew/,否则你会场场比赛暴0!!!

最新文章

  1. SQL Server-外部联接基础回顾(十三)
  2. DataTable 删除列 调整列顺序 修改列标题名称
  3. 『c++』 模板(template)--- 参数化多态性
  4. iOS8设置应用图标红点的权限问题
  5. Java 集合介绍
  6. 全屏滚动-jQuery插件实现
  7. Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法
  8. log4j: 不同的类使用不同的日志
  9. SqlSever基础 datepart函数 返回这一秒已经过去了多少毫秒
  10. ES6中的const命令
  11. java的nio之:java的nio的服务器实现模型
  12. (转) C# textbox 限制输入问题
  13. 判断IE版本的语句 [if lte IE 6]...[endif]
  14. h264码流分析及其工具
  15. [BZOJ 3791] 作业 【DP】
  16. 批处理改hosts
  17. post和get请求的区别
  18. Nginx完美解决前后端分离端口号不同导致的跨域问题
  19. 四川省赛 SCU - 4438
  20. 20171123IdleHandler

热门文章

  1. LOJ2542 PKUWC2018 随机游走 min-max容斥、树上高斯消元、高维前缀和、期望
  2. 学习angularjs的ng-hide和ng-disabled
  3. 转载:(原创)odoo11配置邮件功能的那些事儿
  4. 2018年高教社杯全国大学生数学建模竞赛D题解题思路
  5. nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
  6. 网络编程学习笔记:Socket编程
  7. 【M2】软件工程终期总结报告——阅读作业
  8. 20135323符运锦期中总结----Linux系统的理解及学习心得
  9. QT QProgressBar QProgressDialog 模态,位置设置,无边框,进度条样式
  10. 第三个Sprint ------第五天