校内题,只有std没有题解,看不懂求解释。
题目:
你有 n 个怪物依次要经过,可以选择战斗(与第 i 个怪物战斗你的生命值减少 ai),或者使用法术逃跑(一共只能使用 k 次法术,使用一次法术可以跳过当前怪物,但是往后每个怪物的 a 都会加 1)。问当你能安全通过的时候(生命值任何时候都非负),最小的初始生命值是多少。
std:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k;
signed main(){
cin>>n>>k;
int res=0;
vctor<int> s;
for(int i=0;i<n;i++){
int a;
cin>>a;
res+=a+k;
s.push_back(a+i+k);
}
sort(s.rbegin(),s.rend());
for(int i=0;i<k;i++)
res-=(s[i]-i);
cout<<res;
return 0;
}