QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#876749 | #9634. 序列 | NineSuns | 0 | 1129ms | 56488kb | C++14 | 3.0kb | 2025-01-31 12:22:53 | 2025-01-31 12:22:53 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 5e5+5;
int n, m, a[N];
struct node {
int l, r;
ll sa, mx, sb, ad, dx;
}v[N*4];
ll gets (int p, ll k) {
if (v[p].l == v[p].r) return max(k, v[p].mx);
if (k >= v[p<<1].mx) return k*(v[p<<1].r-v[p<<1].l+1)+gets(p<<1|1, k);
return gets(p<<1, k)+v[p].sa-v[p<<1].sa;
}
inline void pa (int p) {
v[p].sa = v[p<<1].sa+gets(p<<1|1, v[p<<1].mx);
v[p].mx = max(v[p<<1].mx, v[p<<1|1].mx);
}
inline void pb (int p) { v[p].sb = v[p<<1].sb+v[p<<1|1].sb; }
ll uadd (int p, ll k) {
v[p].ad += k; v[p].sb += (v[p].r-v[p].l+1)*k;
return (v[p].r-v[p].l+1)*k;
}
ll usv (int p, ll k) {
v[p].dx += k;
v[p].sb += (v[p>>1].sa-v[p^1].sa)*k;
return (v[p>>1].sa-v[p^1].sa)*k;
}
ll ads (int p, ll dm, ll dx) {
// cout << p << " " << dm << " " << dx << " " << v[p].l << " " << v[p].r << " " << v[p].mx << endl;
if (v[p].l == v[p].r) return v[p].sb += max(dm, v[p].mx)*dx, max(dm, v[p].mx)*dx;
ll res = 0;
if (dm > v[p<<1].mx) res = uadd(p<<1, dm*dx)+ads(p<<1|1, dm, dx);
else res = ads(p<<1, dm, dx)+usv(p<<1|1, dx);
return v[p].sb += res, res;
// pb(p);
}
inline void push_down (int p) {
if (v[p].ad) uadd(p<<1, v[p].ad), uadd(p<<1|1, v[p].ad), v[p].ad = 0;
if (!v[p].dx) return;
if (v[p^1].mx > v[p<<1].mx) uadd(p<<1, v[p^1].mx*v[p].dx), ads(p<<1|1, v[p^1].mx, v[p].dx);
else ads(p<<1, v[p^1].mx, v[p].dx), usv(p<<1|1, v[p].dx);
v[p].dx = 0;
}
ll qsum (int p, int l, int r, int tl, int tr) {
if (tl <= l && r <= tr) return v[p].sb;
int mid = l+r>>1; ll res = 0; push_down(p);
if (tl <= mid) res += qsum(p<<1, l, mid, tl, tr);
if (tr > mid) res += qsum(p<<1|1, mid+1, r, tl, tr);
return res;
}
void add (int p, int l, int r, int tl, int tr, ll &mx) {
if (tl <= l && r <= tr) return ads(p, mx, 1), mx = max(v[p].mx, mx), void();
int mid = l+r>>1; push_down(p);
if (tl <= mid) add(p<<1, l, mid, tl, tr, mx);
if (tr > mid) add(p<<1|1, mid+1, r, tl, tr, mx);
pb(p);
}
void mdy (int p, int l, int r, int id, int k) {
if (l == r) return v[p].sa = v[p].mx = k, void();
int mid = l+r>>1; push_down(p);
id <= mid ? mdy(p<<1, l, mid, id, k) : mdy(p<<1|1, mid+1, r, id, k);
pa(p);
}
void build (int p, int l, int r) {
v[p].l = l; v[p].r = r;
if (l == r) return v[p].sa = v[p].mx = a[l], void();
int mid = l+r>>1;
build(p<<1, l, mid); build(p<<1|1, mid+1, r);
pa(p);
}
int main () {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for (int i = 1;i <= n;i++) cin >> a[i];
build(1, 1, n);
while (m--) {
int o, l, r;
cin >> o >> l >> r;
if (o == 1) mdy(1, 1, n, l, r);
if (o == 2) {
ll mx = 0;
add(1, 1, n, l, r, mx);
}
if (o == 3) cout << qsum(1, 1, n, l, r) << "\n";
}
return 0;
}
詳細信息
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 5732kb
input:
1000 1000 200255705 18851142 736009342 406246331 351992319 749189355 944184790 785599293 530084396 616825582 73892135 176401717 973078957 225462579 140426746 324124972 229974996 750749128 879242920 854856469 515750108 662437499 10800517 96488944 534239216 379225718 1241451 150390174 183892560 613018...
output:
115323323048 65823230682 0 47168872319 60782985614 348599053983 918484726470 208925010382 841530027736 1163442457471 2608439690799 2128414546126 2471685184070 2278023608377 4122371223088 1458343349705 62968981524 4425943072510 5286986186209 537921635417 6006016656637 6374912810574 4556755081981 4090...
result:
wrong answer 51st lines differ - expected: '4208364565647', found: '4208135933842'
Subtask #2:
score: 0
Wrong Answer
Test #6:
score: 0
Wrong Answer
time: 111ms
memory: 19296kb
input:
100000 100000 4637 12023 22485 24887 33065 35780 37538 49402 71281 72891 82706 82752 91276 108256 240372831 135259 144119 527163065 139510686 183411 214260 269767144 246850 265137 200716505 279533 283217 309516 310867 466875375 322790 328304 352577 362081 368658 370430 393854 410075 413844 417924 42...
output:
0 30726293751614 23279151095632 41852587040702 88334302224542 55145178872681 133708315362378 122479400900129 51466277782595 118512887868405 11037534475440 65035924904178 10603452209550 199208093593954 265893836606312 214479670680947 204140164589562 309440794035363 371664753856955 431192829952188 223...
result:
wrong answer 173rd lines differ - expected: '2774082456582436', found: '2774082649407076'
Subtask #3:
score: 0
Wrong Answer
Test #11:
score: 0
Wrong Answer
time: 266ms
memory: 31016kb
input:
199996 199998 5015 394604305 13416 39971157 16609 21608 24264 407389425 31670 31976 33151 38949 39093 43561 45026 52355 53865 59168 62183 64166 66110 67179 69567 78899 10409535 393971884 104797 109461 109501 114704 118658 123559 123907 130465 131312 140968 144801 146183 157067 160370 796894425 17818...
output:
124830885330445 163133190457804 21829962212270 97332810213576 143489565142015 101516391700168 11850432340486 170205236804236 447031192227296 157109166149152 992595580711424 2459784243144 90627247023452 229326680354895 929560394107059 338204574812304 609780011775761 527358703064443 385256587900185 16...
result:
wrong answer 552nd lines differ - expected: '5406007243781548', found: '5406007650980776'
Subtask #4:
score: 0
Wrong Answer
Test #16:
score: 0
Wrong Answer
time: 628ms
memory: 56372kb
input:
499996 499997 1 2646 3802 4717 7652 9462 10048 15736 15959 17076 21684 21628 25147 26990 26023 28835 33604 34213 36006 39643 38238 40133 45193 44699 47403 48437 51742 53992 57055 56322 61353 61812 62008 67837 66136 70512 72503 72294 75169 77534 81608 80173 85831 85776 87518 89661 93233 93800 96640 9...
output:
0 0 0 0 0 105147493356021 18039314547119 60123011205734 797041402206 80680889110877 0 97607273260486 71194267494796 23670063883525 92041637115786 11373629471803 104829243846562 112256838369147 16646163554581 83634910857933 110480671764271 2174900945295 97605316257427 25997394270292 1924389041448 137...
result:
wrong answer 3000th lines differ - expected: '3875992792621935', found: '3875992792735295'
Subtask #5:
score: 0
Wrong Answer
Test #19:
score: 0
Wrong Answer
time: 1129ms
memory: 56488kb
input:
499999 499997 1 913 5858 7110 8076 9893 13142 12135 14769 16455 20711 22647 22330 25867 26677 28695 32280 33608 34824 39255 40515 43887 42090 46155 49082 48316 50861 55535 54485 56506 59203 61928 62076 66600 68030 69805 72680 74796 75455 79690 78235 83297 82398 85367 87069 89711 93646 92554 95923 97...
output:
103621325428465 194930859933753 353758078534853 1405031453939581 1104512586294893 480139615473767 1033865068621131 1418492876310288 1129269195811974 845644688375455 3918331221480338 4521399133967034 482692294649644 1270881159480750 2064526258912334 7779855812924988 5610050149593744 1191164601160151 ...
result:
wrong answer 12671st lines differ - expected: '9252676369918254289', found: '-9194067703791297327'
Subtask #6:
score: 0
Wrong Answer
Test #23:
score: 0
Wrong Answer
time: 865ms
memory: 56372kb
input:
500000 499997 811 680 2664 6777 6210 8794 10852 13568 17252 18119 19538 22423 23434 24510 27591 29645 31329 33806 37129 37447 40339 41361 45606 47813 47448 50532 50029 53543 54938 56738 59038 63199 62439 67323 68737 71432 71039 75469 76122 79648 80334 81276 84567 85506 89609 91503 91445 94036 97338 ...
output:
0 0 46530827437710 159760134281336 281467808921043 372576789411254 270515121922085 273418740230876 314163853033674 465151417299684 39902282964668 608644183868574 3945842783692 13545278446404 658747128786432 8688035320113 175738882065799 103795597112962 0 751662464688101 182137815371386 3400806326455...
result:
wrong answer 435th lines differ - expected: '3329796271696981', found: '3329796271694475'