bzoj 2006 [NOI2010]超级钢琴

网友投稿 679 2022-08-29

bzoj 2006 [NOI2010]超级钢琴

bzoj 2006 [NOI2010]超级钢琴

​​ 音乐。 这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。 一个“超级 和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的 所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个超级和弦所包含的音符集合是相同的。 小Z决定创作一首由k个超级和弦组成的乐曲,为了使得乐曲更加动听,小Z要求该乐曲由k个不同的超级和弦组成。 我们定义一首乐曲的美妙度为其所包含的所有超级和弦的美妙度之和。小Z想知道他能够创作出来的乐曲美妙度最 大值是多少。 Input

第一行包含四个正整数n, k, L, R。其中n为音符的个数,k为乐曲所包含的超级和弦个数,L和R分别是超级和弦所 包含音符个数的下限和上限。 接下来n行,每行包含一个整数Ai,表示按编号从小到大每个音符的美妙度。 N<=500,000 k<=500,000 -1000<=Ai<=1000,1<=L<=R<=N且保证一定存在满足条件的乐曲 Output

只有一个整数,表示乐曲美妙度的最大值。

Sample Input

4 3 2 3 3 2 -6 8 Sample Output

11

【样例说明】 共有5种不同的超级和弦: 音符1 ~ 2,美妙度为3 + 2 = 5 音符2 ~ 3,美妙度为2 + (-6) = -4 音符3 ~ 4,美妙度为(-6) + 8 = 2 音符1 ~ 3,美妙度为3 + 2 + (-6) = -1 音符2 ~ 4,美妙度为2 + (-6) + 8 = 4 最优方案为:乐曲由和弦1,和弦3,和弦5组成,美妙度为5 + 2 + 4 = 11。

求 不重复的满足要求的k条线段 和最大是多少 考虑预处理前缀和 然后利用st表每次o1查询范围内最小值 枚举每个右端点 在合法的左端点内查询最小值放入堆 堆中维护四元组{sum,id,l,r} 区间和,右端点,区间可行左端点和右端点 每次取出去之后相当于将可行区间分成两半重新放入堆中贪心即可

#include#include#include#include#include#define ll long longusing namespace std;inline char gc(){ static char now[1<<16],*S,*T; if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;} return *S++; }inline int read(){ int x=0,f=1;char ch=gc(); while(!isdigit(ch)) {if (ch=='-') f=-1;ch=gc();} while(isdigit(ch)) x=x*10+ch-'0',ch=gc(); return x*f; }struct node{ int sum,p,l,r; inline friend bool operator <(const node &a,const node &b){ return a.sum >q;const int N=500050;int n,k,L,R,mn[N][20],sum[N],a[N],Log[N];inline int min1(const int &a,const int &b){return sum[a]>1]+1,mn[i][0]=i; for (int j=1;j<=Log[n];++j) for (int i=0;i+(1<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:luogu3367 【模板】并查集
下一篇:数据库数据过大的系统架构-mysql分库分表高可用面试题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~