1 条题解
-
1
树状数组+大根堆=30分 (可能还需要一个贪心,但我不会)
#include<bits/stdc++.h> using namespace std; int eee,ok[500001],x,yinfu,shuliang,zuixiao,zuida,zhi[500001],daan; priority_queue<int>p; int lobit(int w){return w&(-w);} void jia(int m,int n) { while(m<=yinfu) { ok[m]+=n; m+=lobit(m); } } int shuchu(int z) { int g=0; while(z>0) { g+=ok[z]; z-=lobit(z); } return g; } int main() { scanf("%d%d%d%d",&yinfu,&shuliang,&zuixiao,&zuida); for(int i=1;i<=yinfu;i++) { scanf("%d",&eee); jia(i,eee); } for(int i=zuixiao;i<=zuida;i++) { for(int j=1;j<=yinfu-i+1;j++) { x=shuchu(j+i-1)-shuchu(j-1); p.push(x); } } for(int i=1;i<=shuliang;i++) { daan+=p.top(); p.pop(); } printf("%d",daan); return 0; }
信息
- ID
- 1869
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 11
- 已通过
- 0
- 上传者