ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#200094 | #2971. Data Structures | Anonyme | 100 | 12383ms | 43980kb | C++11 | 2.9kb | 2023-12-28 09:17:45 | 2023-12-28 13:54:50 |
answer
#include<bits/stdc++.h>
using namespace std;
#define QwQ330AwA return 0
#define ll long long
const int N = 2e5 + 5;
int n, m;
struct Segment {
struct Tree {
ll f;
int mn;
} t[N << 2];
int w[N];
int val[N];
int cnt[N];
#define ls (p << 1)
#define rs ((p << 1) | 1)
ll up(int p, int l, int r, int x) {
if (l == r) return t[p].mn < x ? val[l] : 0;
int mid = (l + r) / 2;
if (t[rs].mn >= x) return up(ls, l, mid, x);
else return up(rs, mid + 1, r, x) + t[p].f - t[rs].f;
}
void build(int p, int l, int r) {
if (l == r) {
t[p].f = t[p].mn = 1e9;
return ;
}
int mid = (l + r) / 2;
build(ls, l, mid);
build(rs, mid + 1, r);
t[p].mn = 1e9;
t[p].f = 1e9;
}
void upd(int p, int l, int r, int x, int v) {
if (l == r) {
//cout << x << ' ' << w[x] << endl;
cnt[l] += v;
if (cnt[l] == 0) t[p].mn = 1e9, t[p].f = 1e9;
else t[p].mn = w[l], t[p].f = val[l];
return ;
}
int mid = (l + r) / 2;
if (x <= mid) upd(ls, l, mid, x, v);
else upd(rs, mid + 1, r, x, v);
t[p].mn = min(t[ls].mn, t[rs].mn);
t[p].f = t[rs].f + up(ls, l, mid, t[rs].mn);
}
int mn;
ll ans;
void query(int p, int l, int r, int L, int R) {
if (L <= l && r <= R) {
// cout << l << ' ' << r << ' ' << t[p].mn << ' ' << mn << endl;
ans += up(p, l, r, mn);
mn = min(mn, t[p].mn);
return ;
}
int mid = (l + r) / 2;
if (mid < R) query(rs, mid + 1, r, L, R);
if (L <= mid) query(ls, l, mid, L, R);
}
ll query(int l, int r, int v) {
mn = v;
ans = 0;
query(1, 1, m, l, r);
return ans;
}
} t[2];
int mp[N], tot;
struct Upd {
int op, l, r, w;
} q[N];
vector < pair <int, int> > ask[N], add[N];
ll ans[N];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> q[i].op;
if (q[i].op == 1) cin >> q[i].l >> q[i].r >> q[i].w, mp[++tot] = q[i].w;
else cin >> q[i].l >> q[i].w, mp[++tot] = q[i].w;
}
sort(mp + 1, mp + tot + 1);
for (int i = 1; i <= m; i++) {
int v = lower_bound(mp + 1, mp + tot + 1, q[i].w) - mp;
//cout << v << endl;
t[0].w[v] = i;
t[1].w[m - v + 1] = i;
t[0].val[v] = mp[v];
t[1].val[m - v + 1] = mp[v];
if (q[i].op == 1) add[q[i].l].push_back({v, 1}), add[q[i].r + 1].push_back({v, -1});
else ask[q[i].l].push_back({v, i});
}
t[0].build(1, 1, m);
t[1].build(1, 1, m);
for (int i = 1; i <= n; i++) {
for (auto qwq : add[i]) {
int x = qwq.first, w = qwq.second;
t[0].upd(1, 1, m, x, w);
t[1].upd(1, 1, m, m - x + 1, w);
}
for (auto qwq : ask[i]) {
int x = qwq.first, id = qwq.second;
ans[id] = t[0].query(1, x, id) + t[1].query(1, m - x + 1, id);
}
}
for (int i = 1; i <= m; i++) if (q[i].op == 2) cout << ans[i] << '\n';
QwQ330AwA;
}
/*
按序列扫,时间轴上前缀LIS+后缀LDS
说错了,值域上对时间的后缀严格最小值+前缀严格最小值
楼房重建。
*/
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 20
Accepted
Test #1:
score: 20
Accepted
time: 6ms
memory: 10760kb
input:
100 100 1 74 90 483277092 1 6 64 330012598 2 70 375491398 2 3 239331851 1 18 20 198961154 1 2 14 360...
output:
0 0 330012598 330012598 483277092 1170065597 1170065597 452459391 1170065597 1170065597 330012598 11...
result:
ok 50 tokens
Test #2:
score: 0
Accepted
time: 4ms
memory: 10760kb
input:
100 100 2 38 721170327 2 42 314679620 1 17 20 906715450 1 16 18 103685864 1 5 96 531920691 2 62 7193...
output:
0 0 531920691 531920691 0 623958040 973681345 531920691 2357530551 1388337284 708185968 1271316206 0...
result:
ok 52 tokens
Test #3:
score: 0
Accepted
time: 9ms
memory: 10756kb
input:
100 100 2 17 45024293 2 3 19392088 1 96 100 648840256 1 46 70 35681425 1 45 87 187169568 2 94 109739...
output:
0 0 0 0 978692719 919455588 1377376203 2465293292 2265626167 1035202805 1110618328 818598426 1297206...
result:
ok 48 tokens
Test #4:
score: 0
Accepted
time: 0ms
memory: 10756kb
input:
100 100 2 87 323450795 1 42 97 623119662 1 80 83 894980421 1 53 75 670299890 1 11 26 26825515 2 83 8...
output:
0 1518100083 623119662 0 1157951550 0 623119662 534831888 1157951550 1878163059 1518100083 315205393...
result:
ok 56 tokens
Test #5:
score: 0
Accepted
time: 3ms
memory: 10760kb
input:
100 100 2 47 68082284 2 99 223185769 1 16 48 444492824 1 64 90 917611375 2 84 375691808 2 64 3345699...
output:
0 0 917611375 917611375 444492824 0 0 1207226581 1688280575 1639910482 2615378266 2169993620 8723019...
result:
ok 45 tokens
Subtask #2:
score: 20
Accepted
Test #6:
score: 20
Accepted
time: 31ms
memory: 12612kb
input:
10000 10000 1 8460 9508 1042674 2 204 1328470 2 4860 1477926 1 1961 6635 5141459 1 292 9067 5267113 ...
output:
0 0 16975126 0 16975126 46997719 55063030 30931075 141846833 187780293 107682628 65919930 129095749 ...
result:
ok 5061 tokens
Test #7:
score: 0
Accepted
time: 24ms
memory: 12612kb
input:
10000 10000 2 9276 1881281 2 5322 3531150 1 3474 7784 3904754 1 4025 9797 5745728 2 3310 5778070 2 9...
output:
0 0 0 0 9650482 9650482 27265670 24319025 117700363 43810928 71463595 43810928 92059219 117700363 39...
result:
ok 4982 tokens
Test #8:
score: 0
Accepted
time: 24ms
memory: 12612kb
input:
10000 10000 1 7383 9485 1846686 1 6986 9000 3184237 1 6839 9474 3516133 2 5148 3717473 1 7066 7667 3...
output:
0 0 5358212 17991259 17991259 0 13905268 4419405 32150597 0 44189118 79838849 82565267 217354756 933...
result:
ok 4992 tokens
Test #9:
score: 0
Accepted
time: 25ms
memory: 12616kb
input:
10000 10000 1 2803 7704 540025 2 4610 1030057 1 2065 5803 1974469 2 8107 2382419 1 3752 6865 2402237...
output:
540025 0 540025 5786332 0 2942262 0 10313728 11183329 31387558 48212163 94546697 83334040 25609491 1...
result:
ok 4980 tokens
Test #10:
score: 0
Accepted
time: 25ms
memory: 12616kb
input:
10000 10000 2 4007 2344559 1 4801 5990 2711187 2 8737 2835780 2 2210 5532123 1 2092 7314 6032600 2 4...
output:
0 0 0 8743787 29668701 32433292 62284718 82336753 42554160 0 67910385 67910385 58116260 87640943 952...
result:
ok 5044 tokens
Subtask #3:
score: 20
Accepted
Test #11:
score: 20
Accepted
time: 685ms
memory: 39644kb
input:
1 200000 2 1 40842 1 1 1 57146 1 1 1 74327 1 1 1 138180 1 1 1 177068 2 1 180805 2 1 276156 2 1 33092...
output:
0 446721 446721 446721 1480698 2182571 3785502 5743088 6732312 6732312 7842367 7842367 9087781 13559...
result:
ok 99938 tokens
Test #12:
score: 0
Accepted
time: 479ms
memory: 39644kb
input:
1 200000 2 1 14695 1 1 1 91996 2 1 197342 2 1 209397 1 1 1 218041 2 1 222383 1 1 1 331372 1 1 1 3719...
output:
0 91996 91996 310037 2652430 4199940 4199940 5196219 5196219 5196219 5196219 6305707 7450858 8629376...
result:
ok 100213 tokens
Test #13:
score: 0
Accepted
time: 452ms
memory: 39772kb
input:
1 200000 2 1 81308 1 1 1 115557 1 1 1 133079 1 1 1 206859 1 1 1 209169 1 1 1 209243 2 1 343492 2 1 3...
output:
0 873907 873907 1308359 2375334 3548289 6446764 6446764 8544811 11175750 12524920 15566603 17312932 ...
result:
ok 99797 tokens
Test #14:
score: 0
Accepted
time: 462ms
memory: 39772kb
input:
1 200000 1 1 1 5294 2 1 27574 2 1 94906 2 1 98049 2 1 117160 1 1 1 193359 2 1 268969 2 1 270447 1 1 ...
output:
5294 5294 5294 5294 198653 198653 487702 972886 1988924 3151302 3824357 3824357 3824357 3824357 4717...
result:
ok 100256 tokens
Test #15:
score: 0
Accepted
time: 445ms
memory: 39652kb
input:
1 200000 1 1 1 9016 2 1 18991 2 1 41928 2 1 186232 2 1 240758 2 1 273018 2 1 322344 1 1 1 493982 2 1...
output:
9016 9016 9016 9016 9016 9016 502998 502998 502998 1172545 2743351 3794251 5131905 10895821 10895821...
result:
ok 99462 tokens
Subtask #4:
score: 40
Accepted
Test #16:
score: 40
Accepted
time: 927ms
memory: 43972kb
input:
200000 200000 1 107780 117993 103094 1 179791 196040 246953 2 85096 289072 2 17740 322258 2 187527 3...
output:
0 0 246953 0 0 1485187 515251 2121732 1660509 3468284 515251 2284006 2738834 669156 1212171 2784416 ...
result:
ok 99930 tokens
Test #17:
score: 0
Accepted
time: 941ms
memory: 43972kb
input:
200000 200000 2 61611 6932 2 59217 12983 2 105294 64747 1 15480 77889 72594 1 96995 190511 108852 2 ...
output:
0 0 0 0 72594 2001882 2998751 1805577 3679187 3430969 2799749 3679187 0 2698669 4853972 4488193 5001...
result:
ok 100045 tokens
Test #18:
score: 0
Accepted
time: 961ms
memory: 43972kb
input:
200000 200000 1 133996 147075 160552 1 148088 195393 200566 1 9615 64555 201794 2 30832 205480 2 991...
output:
201794 0 0 911991 1355532 1255747 1255747 1010964 200566 1687535 3694257 5282151 4502891 5576846 716...
result:
ok 99988 tokens
Test #19:
score: 0
Accepted
time: 978ms
memory: 43972kb
input:
200000 200000 2 154796 42108 1 36524 174159 54445 1 69388 105116 184813 2 58487 189566 1 117123 1463...
output:
0 54445 0 54445 745969 429630 473047 0 0 686758 3765087 7796607 632313 3232670 1479840 2295634 63883...
result:
ok 100043 tokens
Test #20:
score: 0
Accepted
time: 975ms
memory: 43976kb
input:
200000 200000 1 19488 155203 65091 2 144360 68200 1 69369 91361 250910 2 98152 271112 1 82787 88341 ...
output:
65091 65091 381705 302578 1136734 1478473 65091 1165770 1526865 966372 1282986 1787105 2584792 0 339...
result:
ok 99971 tokens
Test #21:
score: 0
Accepted
time: 1000ms
memory: 43980kb
input:
200000 200000 2 21004 21108 2 149922 41746 1 71065 92233 254932 1 65670 118525 255309 2 28596 312959...
output:
0 0 0 590168 0 590168 0 0 4357395 3286714 0 8673905 4851545 2010137 11919939 3249767 3249767 2010137...
result:
ok 99620 tokens
Test #22:
score: 0
Accepted
time: 999ms
memory: 43976kb
input:
200000 200000 1 17310 182659 80879 1 158593 174783 137971 2 130711 272938 1 95591 138317 310746 2 19...
output:
80879 0 0 80879 1637682 2323580 3975810 2984419 0 841400 3712547 5342785 5302016 3712547 6228153 534...
result:
ok 99922 tokens
Test #23:
score: 0
Accepted
time: 975ms
memory: 43976kb
input:
200000 200000 1 66124 113202 4372 1 125849 196977 13845 1 4154 196504 16448 2 37622 16883 2 117907 2...
output:
16448 16448 57148 30293 241646 57148 57148 416160 30293 797632 2820057 0 3247453 2711429 1119391 409...
result:
ok 100038 tokens
Test #24:
score: 0
Accepted
time: 973ms
memory: 43980kb
input:
200000 200000 1 57732 119230 44105 2 34723 69424 2 97889 77378 1 86037 106595 83080 2 138728 115455 ...
output:
0 44105 0 279916 364073 568490 622792 1070453 1216230 0 2428740 2428740 3868088 7329504 5667690 5525...
result:
ok 100261 tokens
Test #25:
score: 0
Accepted
time: 980ms
memory: 43976kb
input:
200000 200000 1 98347 174586 15205 1 45796 190762 31539 1 129944 151749 122497 2 191063 230555 2 118...
output:
0 46744 664569 1670304 1149984 2017313 2925669 1670304 0 0 4835451 0 0 1361064 4712954 1361064 10548...
result:
ok 99728 tokens
Extra Test:
score: 0
Extra Test Passed