此题求长度在l,r,之间内的区间的前k大之和

1.静态区间第k大,不就是主席树么!

可是不会写啊,以后填坑吧

2.优先队列

固定左端点,选取以此为起点的长度l<=x<=r的区间,固定此范围后寻找此范围内最大所到位置t;

由于左端点已经固定且每次i相同的操作下只将一个点放入优先队列,故不会出现重复;

注意:rmq维护的是最大的前缀和所在位置,返回的也是位置

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++)
#define ll long long
using namespace std;
const int N=;
const int Logn=;
inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;}
namespace zjc{
int n,k,L,R,a[N],sum[N],f[N][Logn],lg[N];ll ans; struct node{int op,l,r,t;
friend bool operator <(node x,node y){
return sum[x.t]-sum[x.op-]<sum[y.t]-sum[y.op-];}
};priority_queue<node> q; void init(){
lg[]=-;
rep(i,,n) f[i][]=i,lg[i]=lg[i>>]+;
rep(j,,Logn)for(int i=;i+(<<j)-<=n;i++)
f[i][j]=sum[f[i][j-]]>sum[f[i+(<<j-)][j-]]?f[i][j-]:f[i+(<<j-)][j-];
}
int query(int x,int y){
int s=lg[y-x+];
return sum[f[x][s]]>sum[f[y-(<<s)+][s]]?f[x][s]:f[y-(<<s)+][s];
}
void work(){
n=read(),k=read(),L=read(),R=read();
rep(i,,n) a[i]=read(),sum[i]=sum[i-]+a[i];
init();
for(int i=;i+L-<=n;i++){
int l=i+L-,r=min(i+R-,n);
int t=query(l,r);
q.push((node){i,l,r,t});
}
for(int i=;i<=k;i++){
node u=q.top();q.pop();
ans+=sum[u.t]-sum[u.op-];
if(u.l<=u.t-) q.push((node){u.op,u.l,u.t-,query(u.l,u.t-)});
if(u.t+<=u.r) q.push((node){u.op,u.t+,u.r,query(u.t+,u.r)});
}
printf("%lld\n",ans);return;
}
}
int main(){
freopen("seq.in","r",stdin);
freopen("seq.out","w",stdout);
zjc::work();
return ;
}

最新文章

  1. PHP程序员7小时学会Kotlin系列 - 第一小时 背景
  2. Registered Nurse in the US
  3. Mysql学习笔记(十二)触发器
  4. IOS 五星评分控件
  5. DataGrid中取HyperLinkColumn列的值,处理DataGrid中绑定的特殊字符
  6. 【STL】【模拟】Codeforces 696A Lorenzo Von Matterhorn
  7. centos 安装 vsftp
  8. hdu2082:简单母函数
  9. windows server 2008 设置多用户同时远程登录
  10. Windows系统的线程调度与软件中断分发
  11. Swift - UIView的常用属性和常用方法总结
  12. .NET程序集1
  13. 风险案例-28期-项目Leader与团队成员缺乏沟通,问题响应度较慢导致团队士气低落,工作效率低
  14. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
  15. SharePoint WebPart 简单的读取列表内容的web部件
  16. iOS字典转字符串方法
  17. 【转】ADO.Net对Oracle数据库的操作
  18. python框架之Django(13)-admin组件
  19. 微信小程序 web-view 的 url 带参问题
  20. CruiseControl 安装配置

热门文章

  1. 使用Disruptor实现生产者和消费者模型
  2. BZOJ 1042: [HAOI2008]硬币购物 (详解)(背包&amp;容斥原理)
  3. bzoj1030 文本生成器
  4. HTTPS笔记:使用 SSLEngine 为 aioserver 服务器提供 SSL 访问支持
  5. 在Derby中取得刚刚插入的“递增”类型的字段值
  6. Linux:在文件最后一列添加递增数(awk,cat函数)
  7. javascript学习笔记二
  8. Day3--Python--字符串,for循环,迭代
  9. postman 介绍
  10. JavaBean+Servlet 开发时,JavaBean 编写问题