【题解】 bzoj2006: [NOI2010]超级钢琴 (ST表+贪心)
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!!!
【题解】 bzoj2006: [NOI2010]超级钢琴 (ST表+贪心)的更多相关文章
- [BZOJ2006][NOI2010]超级钢琴(ST表+堆)
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 3679 Solved: 1828[Submit][Statu ...
- 【BZOJ2006】[NOI2010]超级钢琴 ST表+堆
[BZOJ2006][NOI2010]超级钢琴 Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以 ...
- 【BZOJ-2006】超级钢琴 ST表 + 堆 (一类经典问题)
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2473 Solved: 1211[Submit][Statu ...
- [BZOJ2006] [NOI2010]超级钢琴 主席树+贪心+优先队列
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 3591 Solved: 1780[Submit][Statu ...
- BZOJ 2006: [NOI2010]超级钢琴 [ST表+堆 | 主席树]
题意: 一个序列,求k个不相同的长度属于\([L,R]\)的区间使得和最大 前缀和,对于每个r找最小的a[l] 然后我yy了一个可持久化线段树做法...也许会T 实际上主席树就可以了,区间k小值 然后 ...
- BZOJ 2006: [NOI2010]超级钢琴 ST表+堆
开始想到了一个二分+主席树的 $O(n\log^2 n)$ 的做法. 能过,但是太无脑了. 看了一下题解,有一个 ST 表+堆的优美解法. 你发现肯定是选取前 k 大最优. 然后第一次选的话直接选固定 ...
- bzoj 2006 [NOI2010]超级钢琴——ST表+堆
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2006 每个右端点的左端点在一个区间内:用堆记录端点位置.可选区间,按价值排序:拿出一个后也许 ...
- bzoj2006 [NOI2010]超级钢琴 (及其拓展)
bzoj2006 [NOI2010]超级钢琴 给定一个序列,求长度在 \([L,\ R]\) 之间的区间和的前 \(k\) 大之和 \(n\leq5\times10^5,\ k\leq2\times1 ...
- BZOJ2006 [NOI2010]超级钢琴 【堆 + RMQ】
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MB Submit: 3446 Solved: 1692 [Submit][Sta ...
- bzoj千题计划162:bzoj2006: [NOI2010]超级钢琴
http://www.lydsy.com/JudgeOnline/problem.php?id=2006 输出最大的k个 sum[r]-sum[l-1] (L<=r-l+1<=R) 之和 ...
随机推荐
- CF932F Escape Through Leaf 斜率优化、启发式合并
传送门 \(DP\) 设\(f_i\)表示第\(i\)个节点的答案,\(S_i\)表示\(i\)的子节点集合,那么转移方程为\(f_i = \min\limits_{j \in S_i} \{a_i ...
- [Spark][Hive]外部文件导入到Hive的例子
外部文件导入到Hive的例子: [training@localhost ~]$ cd ~[training@localhost ~]$ pwd/home/training[training@local ...
- zjoi2018 day1游记
咕咕咕 upd:看见有人贴上zhihu的问题,那个我早就看到了... 谴责一番题主 @gzy_cjoier 阅读量马上700没想到吧 既然这么火我挂个广告吧 永别,OI 听说有人催更??
- Jlink使用技巧之虚拟串口功能
前言 串口调试是单片机开发过程必不可少的一个功能,一般是使用一个UART-TTL的串口模块来实现串口的功能,其实下载调试使用的Jlink仿真器也可以实现串口调试的功能,本篇文章将介绍如何使用Jlink ...
- [Entity Framework+MVC复习总结1]-WebForm与Asp.Net MVC
一.Web开发方式的比较 二.web Form开发模型 WebForm开发优点: 1.支持事件模型开发.得益于丰富的服务器端组件,webfrom开发可以迅速的搭建web应用 2.使用方便,入门容易 3 ...
- (理论篇)从基础文件IO说起虚拟内存,内存文件映射,零拷贝
为了快速构建项目,使用高性能框架是我的职责,但若不去深究底层的细节会让我失去对技术的热爱. 探究的过程是痛苦并激动的,痛苦在于完全理解甚至要十天半月甚至没有机会去应用,激动在于技术的相同性,新的框架不 ...
- Jmeter(三十三)_JsonPath表达式提取响应
我们在用jmeter做接口测试的时候,有的时候会遇到一些复杂的json响应.比如多层list嵌套时的取值 一个简单的例子: $..Name:列出所有省份 $..Province[0].Name 提取P ...
- UPC-5063-二分图最大匹配
好吧二分图的最小点覆盖=最大匹配 这道题也就变成模板题了... 写一个提醒,在写二分图时,尽量清零操作清空为-1,比如这个题,匹配数组girl[]如果清空为0,代表每个点都与0点连接,但是实际上是并没 ...
- Visual Studio2015安装过程以及单元测试
安装环境: 安装版本: Visual Studio2015 安装过程: 因为我是在第一次老师安排的作业的时候感觉VC++6.0不如VS方便所以才装的Visual Studio2015,又安装了点插件, ...
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...