题目思路
设我们从第 pos 个任务开干。
那么,责备发生的时刻就是 pos, pos+k, pos+2k, pos+3k, pos+4k,每次加 k。所以我们只需要记录每一组的责备力度和,再找出力度最小的答案即可。
时间复杂度 O(n)。
代码实现
#include<bits/stdc++.h>
using namespace std;
int s[323232],a[323232],n,k,mp;
int main(){
cin.tie(0)->sync_with_stdio(0);
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
s[i%k]+=a[i];
}
int ms=s[0];
for(int i=1;i<k;i++){
if(s[i]<ms) ms=s[i],mp=i;
}
cout<<mp+1;
return 0;
}
祝通过!
查看原题链接