ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#203757 | #534. 猫 | tkswls | 100 | 2063ms | 4104kb | C++11 | 1.2kb | 2024-03-14 10:06:33 | 2024-03-14 21:22:03 |
answer
#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize(2)
using namespace std;
const int INF = 1000000000000000000;
int n, m, k, f[100005], g[100005], a[100005], sum[100005], b[100005], l, r, x[100005], y[100005];
inline long double slope(int q, int p) {
return (1.0 * (y[p] - y[q])) / (x[p] - x[q]);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> k;
for (int i = 2; i <= n; i++) {
cin >> sum[i];
sum[i] += sum[i - 1];
}
int p, q;
for (int i = 1; i <= m; i++) {
cin >> p >> q;
a[i] = q - sum[p];
}
sort(a + 1, a + m + 1);
memset(sum, 0, sizeof(sum));
for (int i = 1; i <= m; i++) {
sum[i] = sum[i - 1] + a[i];
}
k = min(k, m);
for (int i = 1; i <= m; i++) g[i] = INF;
g[0] = 0;
while (k--) {
l = r = 1;
b[1] = 0;
y[0] = x[0] = 0;
for (int i = 1; i <= m; i++) {
while (l < r && slope(b[l], b[l + 1]) <= a[i]) {
l++;
}
f[i] = g[b[l]] + sum[b[l]] - sum[i] + i * a[i] - b[l] * a[i];
y[i] = g[i] + sum[i];
x[i] = i;
while (l < r && slope(b[r - 1], b[r]) >= slope(b[r - 1], i)) {
r--;
}
b[++r] = i;
}
for (int i = 1; i <= m; i++) {
g[i] = f[i];
}
}
cout << f[m];
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 4ms
memory: 2116kb
input:
73571 1000 100 38 28 36 82 61 17 47 16 88 90 95 2 26 84 10 48 73 59 29 10 20 94 99 83 79 25 9 41 14 ...
output:
12590216
result:
ok single line: '12590216'
Test #2:
score: 10
Accepted
time: 7ms
memory: 2116kb
input:
67865 1000 100 30 94 97 56 41 18 12 96 27 29 94 76 36 45 75 34 67 98 97 18 86 97 36 76 24 46 34 5 33...
output:
11472767
result:
ok single line: '11472767'
Test #3:
score: 10
Accepted
time: 6ms
memory: 2116kb
input:
91328 1000 100 56 40 66 96 25 10 18 21 71 60 96 17 82 2 45 85 63 30 38 8 78 85 59 49 39 16 45 23 78 ...
output:
15417670
result:
ok single line: '15417670'
Test #4:
score: 10
Accepted
time: 4ms
memory: 2112kb
input:
11409 1000 100 76 81 83 44 95 40 96 96 19 9 87 49 17 15 21 18 65 38 14 56 82 42 19 46 81 10 60 10 16...
output:
2054239
result:
ok single line: '2054239'
Test #5:
score: 10
Accepted
time: 113ms
memory: 2292kb
input:
79788 5000 1000 31 76 3 37 84 2 18 56 64 66 79 16 81 47 75 28 72 18 3 98 61 64 5 78 29 61 51 45 39 4...
output:
5137293
result:
ok single line: '5137293'
Test #6:
score: 10
Accepted
time: 117ms
memory: 2292kb
input:
65698 5000 1000 44 67 75 80 15 60 17 29 91 78 95 90 30 88 88 19 44 53 38 77 91 69 69 63 9 26 87 63 4...
output:
4283409
result:
ok single line: '4283409'
Test #7:
score: 10
Accepted
time: 117ms
memory: 2292kb
input:
81269 5000 1000 13 90 53 94 71 23 35 73 54 9 97 62 17 91 2 69 96 89 76 9 97 79 67 55 58 80 41 28 96 ...
output:
5295068
result:
ok single line: '5295068'
Test #8:
score: 10
Accepted
time: 115ms
memory: 2288kb
input:
61212 5000 1000 43 64 47 16 76 77 54 81 7 33 78 96 13 59 68 18 51 16 87 75 48 46 71 90 79 68 96 67 6...
output:
3944436
result:
ok single line: '3944436'
Test #9:
score: 10
Accepted
time: 1428ms
memory: 4104kb
input:
92921 50000 1000 17 71 72 27 7 47 4 39 93 80 3 74 13 59 42 76 35 85 86 78 37 91 57 89 50 6 89 100 36...
output:
101887288
result:
ok single line: '101887288'
Test #10:
score: 10
Accepted
time: 152ms
memory: 4040kb
input:
93840 50000 100 96 92 90 98 100 94 99 94 96 93 96 93 96 91 100 90 99 100 91 99 93 97 98 100 95 95 91...
output:
2170029592
result:
ok single line: '2170029592'
Extra Test:
score: 0
Extra Test Passed