Please sign in first.
Submission #25549776
Source Code Expand
#include <algorithm>
#include <cassert>
#include <iostream>
#include <map>
#include <vector>
using namespace std;
using ll=long long;
using pp=pair<int,int>;
const int maxn = int(2e5) + 10;
int n;
int a[maxn];
map<pp,int> gnum; int gn;
struct Sparse {
pp tx[20][maxn];
void build() {
for (int i=1; i<=n; ++i) tx[0][i] = {a[i], i};
for (int i=1; i<=19; ++i) for (int j=1; j<=n; ++j) {
tx[i][j] = tx[i-1][j];
if (j+(1<<(i-1)) <= n) {
tx[i][j] = max(tx[i][j], tx[i-1][j+(1<<(i-1))]);
}
}
}
int maxi(int l, int r) {
int w = r-l+1;
for (int i=0;;++i) if (2*(1<<i) >= w) {
return max(tx[i][l], tx[i][r-(1<<i)+1]).second;
}
}
int wrap_v(int x, int y) {
int l = x, r = x;
for (int i=19; 0<=i; --i) {
int tl = l - (1<<i);
if (1 <= tl && tx[i][tl].first < y) l = tl;
int tr = r + (1<<i);
if (tr <= n && tx[i][r+1].first < y) r = tr;
}
return gnum[{l, r}];
}
} tree;
vector<int> te[maxn];
int root;
vector<pp> paths[maxn];
int gdfs(int l, int r) {
int me = ++gn; gnum[{l, r}] = me;
if (l == r) return me;
int i = tree.maxi(l, r);
if (l < i) te[me].push_back(gdfs(l, i-1));
if (i < r) te[me].push_back(gdfs(i+1, r));
return me;
}
int tin[maxn], tout[maxn], nt;
void tdfs1(int x) {
tin[x] = ++nt; for (int y : te[x]) tdfs1(y); tout[x] = nt;
}
ll dp[maxn];
struct It {
const static int M = 262144;
ll t[M<<1];
void upd(int l, int r, ll v) {
for (l+=M, r+=M; l<=r; l/=2, r/=2) {
if (l%2==1) t[l++] += v;
if (r%2==0) t[r--] += v;
}
}
ll get(int p) { ll ret = 0;
for (p+=M; p; p/=2) ret += t[p];
return ret;
}
} giveup;
void tdfs2(int x) {
ll cds = 0;
for (int y:te[x]) tdfs2(y), cds += dp[y];
ll mdf = 0;
for (auto &tmp:paths[x]) {
int to, c; tie(to, c) = tmp;
mdf = max(mdf, c + giveup.get(tin[to]));
}
dp[x] = cds + mdf;
giveup.upd(tin[x], tout[x], -mdf);
}
int main() { cin.tie(0)->sync_with_stdio(0);
cin >> n; for (int i=1; i<=n; ++i) cin >> a[i];
tree.build();
ll csum = 0;
root = gdfs(1, n);
{ int m; cin >> m;
for (;m--;) {
int x, y, c; cin >> x >> y >> c; csum += c;
int up = tree.wrap_v(x, y), down = tree.wrap_v(x, a[x]+1);
paths[up].push_back({down, c});
} }
tdfs1(root);
tdfs2(root);
ll ans = csum - dp[root];
cout << ans << '\n';
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - 星座 3 (Constellation 3) |
| User | Namnamseo |
| Language | C++ (GCC 9.2.1) |
| Score | 100 |
| Code Size | 2379 Byte |
| Status | AC |
| Exec Time | 763 ms |
| Memory | 88760 KiB |
Judge Result
| Set Name | Subtask 1 | Subtask 2 | Subtask 3 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Score / Max Score | 14 / 14 | 21 / 21 | 65 / 65 | ||||||
| Status |
|
|
|
| Set Name | Test Cases |
|---|---|
| Subtask 1 | sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt |
| Subtask 2 | sample-01.txt, sample-02.txt, sample-03.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt |
| Subtask 3 | 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 03-01.txt, 03-02.txt, 03-03.txt, 03-04.txt, 03-05.txt, 03-06.txt, 03-07.txt, 03-08.txt, 03-09.txt, 03-10.txt, 03-11.txt, 03-12.txt, 03-13.txt, 03-14.txt, 03-15.txt, 03-16.txt, 03-17.txt, 03-18.txt, 03-19.txt, 03-20.txt, 03-21.txt, 03-22.txt, sample-01.txt, sample-02.txt, sample-03.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01-01.txt | AC | 15 ms | 13116 KiB |
| 01-02.txt | AC | 13 ms | 13144 KiB |
| 01-03.txt | AC | 12 ms | 13048 KiB |
| 01-04.txt | AC | 13 ms | 13116 KiB |
| 01-05.txt | AC | 13 ms | 13228 KiB |
| 01-06.txt | AC | 14 ms | 13176 KiB |
| 01-07.txt | AC | 12 ms | 13224 KiB |
| 01-08.txt | AC | 12 ms | 13108 KiB |
| 01-09.txt | AC | 14 ms | 13180 KiB |
| 01-10.txt | AC | 13 ms | 13160 KiB |
| 01-11.txt | AC | 13 ms | 13104 KiB |
| 01-12.txt | AC | 12 ms | 13184 KiB |
| 01-13.txt | AC | 19 ms | 13112 KiB |
| 01-14.txt | AC | 12 ms | 13052 KiB |
| 01-15.txt | AC | 12 ms | 13116 KiB |
| 01-16.txt | AC | 17 ms | 13208 KiB |
| 01-17.txt | AC | 10 ms | 13112 KiB |
| 01-18.txt | AC | 12 ms | 13244 KiB |
| 01-19.txt | AC | 15 ms | 13184 KiB |
| 01-20.txt | AC | 11 ms | 13108 KiB |
| 01-21.txt | AC | 12 ms | 13136 KiB |
| 01-22.txt | AC | 12 ms | 13212 KiB |
| 02-01.txt | AC | 13 ms | 13592 KiB |
| 02-02.txt | AC | 14 ms | 13660 KiB |
| 02-03.txt | AC | 16 ms | 13596 KiB |
| 02-04.txt | AC | 15 ms | 13684 KiB |
| 02-05.txt | AC | 14 ms | 13632 KiB |
| 02-06.txt | AC | 16 ms | 13660 KiB |
| 02-07.txt | AC | 18 ms | 13668 KiB |
| 02-08.txt | AC | 14 ms | 13676 KiB |
| 02-09.txt | AC | 17 ms | 13668 KiB |
| 02-10.txt | AC | 19 ms | 13820 KiB |
| 02-11.txt | AC | 16 ms | 13672 KiB |
| 02-12.txt | AC | 19 ms | 13716 KiB |
| 02-13.txt | AC | 18 ms | 13644 KiB |
| 02-14.txt | AC | 24 ms | 13724 KiB |
| 02-15.txt | AC | 15 ms | 13836 KiB |
| 02-16.txt | AC | 19 ms | 13856 KiB |
| 02-17.txt | AC | 15 ms | 13652 KiB |
| 02-18.txt | AC | 16 ms | 13712 KiB |
| 02-19.txt | AC | 14 ms | 13684 KiB |
| 02-20.txt | AC | 14 ms | 13648 KiB |
| 02-21.txt | AC | 16 ms | 13788 KiB |
| 02-22.txt | AC | 19 ms | 13608 KiB |
| 03-01.txt | AC | 551 ms | 71228 KiB |
| 03-02.txt | AC | 532 ms | 70520 KiB |
| 03-03.txt | AC | 518 ms | 69612 KiB |
| 03-04.txt | AC | 529 ms | 71304 KiB |
| 03-05.txt | AC | 522 ms | 69236 KiB |
| 03-06.txt | AC | 517 ms | 69312 KiB |
| 03-07.txt | AC | 540 ms | 69460 KiB |
| 03-08.txt | AC | 578 ms | 70632 KiB |
| 03-09.txt | AC | 557 ms | 70688 KiB |
| 03-10.txt | AC | 763 ms | 81460 KiB |
| 03-11.txt | AC | 724 ms | 76900 KiB |
| 03-12.txt | AC | 737 ms | 74872 KiB |
| 03-13.txt | AC | 652 ms | 73108 KiB |
| 03-14.txt | AC | 507 ms | 77172 KiB |
| 03-15.txt | AC | 500 ms | 76760 KiB |
| 03-16.txt | AC | 260 ms | 88760 KiB |
| 03-17.txt | AC | 548 ms | 70820 KiB |
| 03-18.txt | AC | 688 ms | 81708 KiB |
| 03-19.txt | AC | 531 ms | 69660 KiB |
| 03-20.txt | AC | 548 ms | 68800 KiB |
| 03-21.txt | AC | 687 ms | 82780 KiB |
| 03-22.txt | AC | 587 ms | 69056 KiB |
| sample-01.txt | AC | 17 ms | 13008 KiB |
| sample-02.txt | AC | 14 ms | 13012 KiB |
| sample-03.txt | AC | 13 ms | 13064 KiB |