宁波多校(一) E题 ddd的逛街计划(Easy Version)

思维题,题目限制了在一个长度为k的滑动窗口内必须要有l个数

因此所有%k相等的位置的状态是固定的,否则两个k中的个数就不相等

因此只需要把%k个相加,之后在k个中选最大的l个就行

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
typedef long long ll;
int a[N];
int b[N];
int main(){
    int i;
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        int i;
        memset(b,0,sizeof b);
        for(i=0;i<n;i++){
            cin>>a[i];
        }
        int k,l,r;
        cin>>k>>l>>r;
        for(i=0;i<n;i++){
            b[i%k]+=a[i];
        }
        sort(b,b+k);
        reverse(b,b+k);
        int res=0;
        for(i=0;i<l;i++){
            res+=b[i];
        }
        cout<<res<<endl;
    }
}
View Code

 

posted @ 2020-07-04 23:27  朝暮不思  阅读(143)  评论(0编辑  收藏  举报