luogu 2048 超级钢琴 贪心+堆+RMQ
2024-10-09 06:00:59
此题求长度在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 ;
}
最新文章
- PHP程序员7小时学会Kotlin系列 - 第一小时 背景
- Registered Nurse in the US
- Mysql学习笔记(十二)触发器
- IOS 五星评分控件
- DataGrid中取HyperLinkColumn列的值,处理DataGrid中绑定的特殊字符
- 【STL】【模拟】Codeforces 696A Lorenzo Von Matterhorn
- centos 安装 vsftp
- hdu2082:简单母函数
- windows server 2008 设置多用户同时远程登录
- Windows系统的线程调度与软件中断分发
- Swift - UIView的常用属性和常用方法总结
- .NET程序集1
- 风险案例-28期-项目Leader与团队成员缺乏沟通,问题响应度较慢导致团队士气低落,工作效率低
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
- SharePoint WebPart 简单的读取列表内容的web部件
- iOS字典转字符串方法
- 【转】ADO.Net对Oracle数据库的操作
- python框架之Django(13)-admin组件
- 微信小程序 web-view 的 url 带参问题
- CruiseControl 安装配置
热门文章
- 使用Disruptor实现生产者和消费者模型
- BZOJ 1042: [HAOI2008]硬币购物 (详解)(背包&;容斥原理)
- bzoj1030 文本生成器
- HTTPS笔记:使用 SSLEngine 为 aioserver 服务器提供 SSL 访问支持
- 在Derby中取得刚刚插入的“递增”类型的字段值
- Linux:在文件最后一列添加递增数(awk,cat函数)
- javascript学习笔记二
- Day3--Python--字符串,for循环,迭代
- postman 介绍
- JavaBean+Servlet 开发时,JavaBean 编写问题