求解释代码
  • 板块学术版
  • 楼主int8
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/5 15:54
  • 上次更新2024/7/5 17:14:37
查看原帖
求解释代码
551089
int8楼主2024/7/5 15:54

校内题,只有std没有题解,看不懂求解释。

题目:

你有 nn 个怪物依次要经过,可以选择战斗(与第 ii 个怪物战斗你的生命值减少 aia_i),或者使用法术逃跑(一共只能使用 kk 次法术,使用一次法术可以跳过当前怪物,但是往后每个怪物的 aa 都会加 11)。问当你能安全通过的时候(生命值任何时候都非负),最小的初始生命值是多少。

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;
}
2024/7/5 15:54
加载中...