3.怪兽突击【算法赛】 - 蓝桥云课 (lanqiao.cn)
假设当i是3,k是5的时候:
就是说我们假设只打到第3号怪兽: 那么第一轮消耗的能量就是2+3+4=9.
然后还剩下2次要打,我们打第二轮要在ai+bi里找消耗最小的去打:
我们发现第一只怪兽ai+bi最小,剩下的2次我们全打第一只怪兽:
所以sum总共是9+2*5=19
code
因为a[i],b[i]最大都是1e5,相加可能爆int,所以要开long long,那么正无穷最大值就不能是0x3f3f3f3f,而应该是0x3f3f3f3f3f3f3f3f,或者是2e18
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
#define int long long
#define INF 0x3f3f3f3f3f3f3f
int a[N], b[N];
int sum = 0;
int res = INF,minn=INF;
signed main()
{
int n, k; cin >> n >> k;
for (int i = 1; i <= n; i++)cin >> a[i];
for (int i = 1; i <= n; i++)cin >> b[i];
for (int i = 1; i <=min(n,k); i++)
{
sum += a[i];
//剩下的打k-i次
minn = min(minn, a[i] + b[i]);
res= min(res,sum + (k - i) * minn);
}
cout <<res;
return 0;
}