提出 #18766903
ソースコード 拡げる
#include <atcoder/mincostflow>
#include <iostream>
#include <vector>
using namespace std;
using namespace atcoder;
using ll = long long;
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin >> n;
vector<int> x(n), y(n);
vector<ll> v(n);
for (int i = 0; i < n; i++) {
cin >> x[i] >> y[i] >> v[i];
}
int m;
cin >> m;
const int TEN9 = (int)(1e9);
vector<int> le(n + 1, -1), ri(n + 1, TEN9), dw(n + 1, -1), up(n + 1, TEN9);
for (int i = 0; i < m; i++) {
char c;
int a, b;
cin >> c >> a >> b;
if (c == 'L') le[b] = max(le[b], a);
if (c == 'R') ri[b] = min(ri[b], a);
if (c == 'D') dw[b] = max(dw[b], a);
if (c == 'U') up[b] = min(up[b], a);
}
for (int i = 1; i <= n; i++) {
le[i] = max(le[i], le[i - 1]);
ri[i] = min(ri[i], ri[i - 1]);
dw[i] = max(dw[i], dw[i - 1]);
up[i] = min(up[i], up[i - 1]);
}
ll ans = 0;
const ll BIG = ll(1e15);
for (int k = 1; k <= n; k++) {
mcf_graph<int, ll> g(2 * n + 2 * k + 2);
int sv = 2 * n + 2 * k, tv = sv + 1;
for (int i = 0; i < n; i++) {
g.add_edge(i, n + i, 1, BIG - v[i]);
}
for (int i = 0; i < k; i++) {
g.add_edge(sv, 2 * n + i, 1, 0);
for (int j = 0; j < n; j++) {
if (le[i] < x[j] && x[j] < ri[k - 1 - i]) {
g.add_edge(2 * n + i, j, 1, 0);
}
if (dw[i] < y[j] && y[j] < up[k - 1 - i]) {
g.add_edge(n + j, 2 * n + k + i, 1, 0);
}
}
g.add_edge(2 * n + k + i, tv, 1, 0);
}
auto mcf = g.flow(sv, tv, TEN9);
if (mcf.first == k) {
ans = max(ans, k * BIG - mcf.second);
}
}
cout << ans << endl;
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Snuke the Phantom Thief |
| ユーザ | yosupo |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 1300 |
| コード長 | 1965 Byte |
| 結果 | AC |
| 実行時間 | 143 ms |
| メモリ | 4296 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1300 / 1300 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | example_00, example_01, example_02, example_03 |
| All | example_00, example_01, example_02, example_03, fixed_00, fixed_01, fixed_02, fixed_03, fixed_04, fixed_05, fixed_06, fixed_07, fixed_08, fixed_09, fixed_10, fixed_11, manyrand_00, manyrand_01, manyrand_02, manyrand_03, manyuse_00, manyuse_01, manyuse_02, manyuse_03, naname_00, naname_01, naname_02, naname_03, naname_04, naname_05, naname_06, naname_07, naname_08, naname_09, naname_10, naname_11, naname_line_00, naname_line_01, perm_00, perm_01, perm_02, perm_03, perm_04, perm_05, perm_06, perm_07, perm_08, perm_09, perm_10, perm_11, rand_00, rand_01, square_00, square_01, square_02, square_03, twinkle2_00, twinkle2_01, twinkle2_02, twinkle_00, twinkle_01, twinkle_02, twinkle_03, twinkle_04, twinkle_05, twinkle_06, twinkle_07, twinkle_08, twinkle_09, verysmall_rand_00, verysmall_rand_01 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| example_00 | AC | 11 ms | 3556 KiB |
| example_01 | AC | 3 ms | 3464 KiB |
| example_02 | AC | 2 ms | 3608 KiB |
| example_03 | AC | 2 ms | 3564 KiB |
| fixed_00 | AC | 10 ms | 3660 KiB |
| fixed_01 | AC | 95 ms | 3996 KiB |
| fixed_02 | AC | 41 ms | 3864 KiB |
| fixed_03 | AC | 23 ms | 3628 KiB |
| fixed_04 | AC | 10 ms | 3656 KiB |
| fixed_05 | AC | 85 ms | 3976 KiB |
| fixed_06 | AC | 6 ms | 3696 KiB |
| fixed_07 | AC | 83 ms | 3840 KiB |
| fixed_08 | AC | 51 ms | 3848 KiB |
| fixed_09 | AC | 110 ms | 3956 KiB |
| fixed_10 | AC | 14 ms | 3640 KiB |
| fixed_11 | AC | 77 ms | 3904 KiB |
| manyrand_00 | AC | 133 ms | 4028 KiB |
| manyrand_01 | AC | 140 ms | 4032 KiB |
| manyrand_02 | AC | 143 ms | 4296 KiB |
| manyrand_03 | AC | 132 ms | 4168 KiB |
| manyuse_00 | AC | 10 ms | 3660 KiB |
| manyuse_01 | AC | 12 ms | 3796 KiB |
| manyuse_02 | AC | 10 ms | 3732 KiB |
| manyuse_03 | AC | 19 ms | 3700 KiB |
| naname_00 | AC | 6 ms | 3600 KiB |
| naname_01 | AC | 90 ms | 3928 KiB |
| naname_02 | AC | 35 ms | 3716 KiB |
| naname_03 | AC | 13 ms | 3676 KiB |
| naname_04 | AC | 89 ms | 3928 KiB |
| naname_05 | AC | 7 ms | 3632 KiB |
| naname_06 | AC | 6 ms | 3592 KiB |
| naname_07 | AC | 91 ms | 3852 KiB |
| naname_08 | AC | 7 ms | 3640 KiB |
| naname_09 | AC | 6 ms | 3540 KiB |
| naname_10 | AC | 31 ms | 3840 KiB |
| naname_11 | AC | 68 ms | 3872 KiB |
| naname_line_00 | AC | 22 ms | 3756 KiB |
| naname_line_01 | AC | 25 ms | 3820 KiB |
| perm_00 | AC | 6 ms | 3712 KiB |
| perm_01 | AC | 11 ms | 3656 KiB |
| perm_02 | AC | 7 ms | 3728 KiB |
| perm_03 | AC | 6 ms | 3708 KiB |
| perm_04 | AC | 6 ms | 3672 KiB |
| perm_05 | AC | 7 ms | 3728 KiB |
| perm_06 | AC | 6 ms | 3636 KiB |
| perm_07 | AC | 14 ms | 3588 KiB |
| perm_08 | AC | 6 ms | 3596 KiB |
| perm_09 | AC | 6 ms | 3708 KiB |
| perm_10 | AC | 6 ms | 3600 KiB |
| perm_11 | AC | 12 ms | 3720 KiB |
| rand_00 | AC | 11 ms | 3540 KiB |
| rand_01 | AC | 8 ms | 3556 KiB |
| square_00 | AC | 7 ms | 3648 KiB |
| square_01 | AC | 7 ms | 3604 KiB |
| square_02 | AC | 5 ms | 3716 KiB |
| square_03 | AC | 6 ms | 3708 KiB |
| twinkle2_00 | AC | 23 ms | 3804 KiB |
| twinkle2_01 | AC | 23 ms | 3816 KiB |
| twinkle2_02 | AC | 27 ms | 3700 KiB |
| twinkle_00 | AC | 17 ms | 3700 KiB |
| twinkle_01 | AC | 24 ms | 3712 KiB |
| twinkle_02 | AC | 17 ms | 3788 KiB |
| twinkle_03 | AC | 24 ms | 3716 KiB |
| twinkle_04 | AC | 20 ms | 3604 KiB |
| twinkle_05 | AC | 19 ms | 3632 KiB |
| twinkle_06 | AC | 18 ms | 3708 KiB |
| twinkle_07 | AC | 17 ms | 3652 KiB |
| twinkle_08 | AC | 17 ms | 3772 KiB |
| twinkle_09 | AC | 18 ms | 3656 KiB |
| verysmall_rand_00 | AC | 2 ms | 3472 KiB |
| verysmall_rand_01 | AC | 3 ms | 3612 KiB |