贪心,1 尽量将道具用在花费时间大的关卡 2 对于你想要用道具的关卡,尽量用离这个关卡前面最近的道具 比如你想在第6关使用道具,第3关和第5关各获得一个道具,那么用第5关的道具
#include <bits/stdc++.h>
using namespace std;
int main() {
// 5 4 4 1 1 1
// 4 6 3 5 2 1
// 5 3
int n, k;
cin >> n >> k;
set < int, greater<> > se;
map <int, vector<int> , greater<> > ma;
for (int i = 1, j = 1; i <= n; i++) {
int x;
cin >> x;
ma[x].push_back(i);
if (i == k * j + 1) {
se.insert(i);
j++;
}
}
long long int ans = 0;
for (auto it : ma) {
for (int i = it.second.size() - 1; i >= 0; i--) {
int nowi = it.second[i];
int nowx = it.first;
//for(auto ik:se) cout<<ik<<' ';cout<<'\n';
if(se.size() == 0 || *se.rbegin() > nowi) {
ans += nowx;
//cout<<"1:"<<nowi<<","<<nowx<<'\n';
continue;
}
se.erase( se.lower_bound(nowi) );
//cout<<"2:"<<nowi<<","<<nowx<<'\n';
}
}
cout<<ans<<'\n';
return 0;
}