『Fwb』冥月凄凉の题解

· · 个人记录

难度:普及/提高-。

思路:思维。

我们很容易想到,Fwb 可以分成以下两种作法:

代码如下:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1100000;
int n, w, ans, sum;
int a[N], v[N], k[N];
signed main() {
    scanf("%lld%lld", &n, &w);
    for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
    for (int i = 1; i <= n; i++) scanf("%lld", &v[i]);
    for (int i = 1; i <= n; i++) scanf("%lld", &k[i]);
    for (int i = 1; i < n - 1; i++) {
        sum += a[i];//一直砸到第i个,在第i+1个收买,在i+2及后面任意一个卖出 
        ans = max(ans, sum * w - k[i + 1]);
    }
    sum = 0;
    for (int i = 1; i < n; i++) {//第n个摊位留着卖出月亮 
        sum += max(0LL, w * a[i] - v[i]);//如果买入便宜就取赚的钱,否则取0 
    }
    ans = max(ans, sum);
    printf("%lld", ans);
    return 0;
}