单击“以好友身份请求”时,会弹出一个框,要求您确认,但没有,并且在检查控制台时,我看到此错误:“ ReferenceError:HTMLButtonElement.onclick中未定义friendToggle”
代码如下:
using ll = long long;
ll n, z;
cin >> n >> z;
vector<ll> a(n);
for (auto &e : a) {
cin >> e;
}
assert(is_sorted(a.begin(), a.end()));
ll stratAns, ans = INF;
// prefix sum array
vector<ll> pref(n + 1);
for (int i = 1; i <= n; ++i) {
pref[i] = pref[i - 1] + a[i - 1];
}
stratAns = INF;
/// strategy 1 : handles cases where runs like 10, 01, 010, 1 are optimal to choose
for (int starting = 0; starting + z - 1 < n; ++starting) {
int ending = starting + z - 1;
ll curAns = 0;
//~ for (int i = starting; i <= ending; ++i) {
//~ curAns += a[i];
//~ }
// doing the same with prefix sums instead
curAns += pref[ending + 1] - pref[starting];
curAns += a[ending] * (n - ending - 1);
stratAns = min(stratAns, curAns);
}
ans = min(ans, stratAns);
stratAns = INF;
/// strategy 2 : handle cases when runs 1010 and 101 are optimal
for (int last = z - 1; last < n; ++last) {
for (int x = 1, y = z - 1; y > 0 && x < z; x++, y--) {
assert(x + y == z);
ll curAns = 0;
//~ for (int i = 0; i < x; ++i) {
//~ curAns += a[i];
//~ }
// performing the same with prefix sums instead
curAns += pref[x];
curAns += a[x - 1] * (last - y + 1 - x);
//~ for (int i = last - y + 1; i <= last; ++i) {
//~ curAns += a[i];
//~ }
// performing the same with prefix sums instead
curAns += pref[last + 1] - pref[last - y + 1];
curAns += a[last] * (n - last - 1);
stratAns = min(curAns, stratAns);
}
}
ans = min(ans, stratAns);
cout << ans << endl;