QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#405093 | #8229. 栈 | dingdingtang11514# | 18 | 128ms | 49616kb | C++14 | 3.1kb | 2024-05-05 11:02:00 | 2024-05-05 11:02:01 |
Judging History
answer
#include <iostream>
#include <cstring>
#include <map>
#include <vector>
#include <queue>
#include <cmath>
#include <algorithm>
#include <set>
// #include <bits/stdc++.h>
#define int long long
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rof(i,a,b) for(int i=(a);i>=(b);i--)
#define Grf(it,u,to) for(int it=he[u],to;(to=e[it],it);it=nxt[it])
#define In __inline
#define OP operator
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
namespace Mine {
// mt19937_64 wql(514);
In int read() {
ll x=1,a=0;
char ch=getchar();
while(ch>'9' || ch<'0') x=(ch=='-')?-1:x,ch=getchar();
while(ch>='0' && ch<='9') a=(a<<1)+(a<<3)+(ch-'0'),ch=getchar();
return a*x;
} const int N=1e5+100;
int n,m;
namespace S0 {
struct stk {
int sts[5005],stv[5005],tot;
void push(int val,int sum) {sts[++tot]=sum,stv[tot]=val;}
void pp(int cnt) {
while(tot && sts[tot]<=cnt) cnt-=sts[tot--];
if(tot) sts[tot]-=cnt;
} In int get(int p) {
int ret=0,i=1; while(i<=tot && p>=sts[i]) {
p-=sts[i];ret+=sts[i]*stv[i];i++;
} if(i<=tot) ret+=stv[i]*p;
return ret;
} In int get(int l,int r){
return get(r)-get(l-1);
} void print() {
For(i,1,tot) printf("%lld ",sts[i]);
puts("");
}
} mp[5005];
void solve0() {
while(m--) {
// printf("%d :\n",m);
int opt=read(); if(opt==1) {
int l=read(),r=read(),x=read(),y=read();
For(i,l,r) mp[i].push(y,x);
} else if(opt==2) {
int l=read(),r=read(),x=read();
For(i,l,r) mp[i].pp(x);
} else {
int x=read(),l=read(),r=read();
printf("%lld\n",mp[x].get(l,r));
} //For(i,1,n) mp[i].print();
// puts("");
}
}
} namespace S1 {
struct node{
int x,y; /// a_i = max ( x , a_i + y )
} tr[N<<2];
void pushdown(int u) {
int X=tr[u].x,Y=tr[u].y;
tr[u<<1].x+=X,tr[u<<1|1].x+=X;
tr[u<<1].y=max(tr[u<<1].y+X,Y);
tr[u<<1|1].y=max(tr[u<<1|1].y+X,Y);
tr[u].x=tr[u].y=0;
}
void mdf(int ql,int qr,int val,int u=1,int l=1,int r=n) {
if(ql<=l && r<=qr) tr[u].x+=val;
else { int mid=(l+r)>>1; pushdown(u);
if(ql<=mid) mdf(ql,qr,val,u<<1,l,mid);
if(mid<qr) mdf(ql,qr,val,u<<1|1,mid+1,r);
}
} int ask(int pos,int u=1,int l=1,int r=n) {
if(l==r) return max(tr[u].x,tr[u].y);
int mid=(l+r)>>1; pushdown(u);
if(pos<=mid) return ask(pos,u<<1,l,mid);
return ask(pos,u<<1|1,mid+1,r);
}
void solve1() {
while(m--) {
// printf("%d :\n",m);
int opt=read(); if(opt==1) {
int l=read(),r=read(),x=read(),y=read();
mdf(l,r,x);
} else if(opt==2) {
int l=read(),r=read(),x=read();
mdf(l,r,-x);
} else {
int x=read(),l=read(),r=read();
int siz=ask(x);
printf("%lld\n",min(siz,r)-min(siz,l-1));
} //For(i,1,n) mp[i].print();
// puts("");
}
}
}
signed main() {
n=read(),m=read();
if(n<=5000 && m<=5000) S0::solve0();
else S1::solve1();
return 0;
}
}signed main() {
// freopen("homework.in","r",stdin);
// freopen("homework.out","w",stdout);
return Mine::main();
}
详细
Subtask #1:
score: 18
Accepted
Test #1:
score: 18
Accepted
time: 75ms
memory: 44224kb
input:
4907 4910 2 763 3330 1 3 307 1 1 1 2262 3430 22699 89397 1 1915 4000 51541 67587 2 212 2990 9763 2 1086 2162 1 2 1813 4496 16760 1 51 2796 68005 99390 1 1267 1519 74236 66178 3 1768 23808 54314 2 900 4122 27758 3 3287 17350 28989 2 3277 4024 3633 2 444 4866 1 2 353 4219 1061 1 987 3141 99906 17320 2...
output:
0 3032090730 903396180 471569175 200648623 98486697 647114751 123945 50793012 61782451 0 0 0 762429740 321140700 871619914 536311874 5361094892 0 1792521566 6640518748 2415375780 249435711 225987900 5250788038 1145132507 140071334 0 118545795 3086405469 5646099271 84280112 1232466642 4992966775 7968...
result:
ok 1622 numbers
Test #2:
score: 18
Accepted
time: 71ms
memory: 45092kb
input:
4992 4958 2 2965 3892 1 3 2141 1 1 3 4963 1 1 3 2298 1 1 3 2236 1 1 1 3393 4668 65533 8224 1 884 2343 86158 41289 3 4617 12174 63763 2 898 4236 44143 2 2860 4246 1 2 2696 3014 1 2 496 1635 15779 3 2230 8262 39805 2 3287 3627 5350 2 3443 4900 19874 1 535 1622 26926 88406 1 3272 3747 94290 19081 2 812...
output:
0 0 0 0 424276160 1302420216 0 393525459 0 188112684 0 38587680 696225296 717180100 2193537294 297696966 0 0 0 124461621 26876032 1609925499 0 3681040200 51602516 1502016 0 8636592 1138256753 196684293 0 16126264 959145423 58640451 1945754097 2949696960 0 3577791360 2029416288 2361290004 5882833609 ...
result:
ok 1597 numbers
Test #3:
score: 18
Accepted
time: 86ms
memory: 48144kb
input:
4980 4984 1 183 4891 75896 45281 2 767 3528 1367 3 2313 45535 49112 2 529 4006 1568 2 2114 2971 3819 3 3237 30655 31381 1 2074 2176 51631 35339 3 1602 95 16082 2 1340 3727 9249 2 105 1907 11928 3 2461 15189 33999 2 1450 1956 4721 1 700 4760 3043 92859 2 329 2992 6515 3 1295 10832 40486 2 3477 4447 8...
output:
162015418 32919287 723952628 851780891 1342808055 38307726 4701651115 903944603 240532672 652952020 1168430924 2253203546 3542990917 5872603595 305017015 657095398 25321688 1834305604 0 256832266 2732654054 1757936801 1158797383 656866283 3470700279 694675745 1042863834 76284096 6705704850 475899629...
result:
ok 1645 numbers
Test #4:
score: 18
Accepted
time: 88ms
memory: 48164kb
input:
4976 4948 2 858 1218 1 1 780 1528 70910 12344 1 681 4398 25997 59182 1 4564 4692 72420 96925 1 1124 2604 98159 98651 3 4734 1 1 2 1921 3430 3373 1 3805 3909 56118 23383 2 1471 2065 23679 2 1052 1154 30740 1 1098 2180 13716 29728 1 1094 3585 2073 93894 1 2024 4201 39023 1713 3 1571 21453 96893 3 1297...
output:
0 7262943486 185110624 53327400 957813600 383014415 1539405803 896522316 1454164560 7158196459 479198625 1943839360 1189657450 23355822139 2684778350 183742084 6400082784 2310401225 2082631008 5644811789 1875949890 3185562597 7185156304 3147144197 1588457333 676240200 1122598010 8758314557 100699296...
result:
ok 1663 numbers
Test #5:
score: 18
Accepted
time: 128ms
memory: 49616kb
input:
4944 4934 1 468 4845 87517 63656 3 4756 22899 79177 1 761 1054 45331 86403 1 24 2806 46189 11490 1 2602 4446 12528 14317 3 2601 51537 65051 1 1502 3573 79699 84830 3 1998 35405 151264 1 2400 4041 95071 83748 1 2050 3772 23643 53614 3 2261 51072 236192 2 1317 1908 6197 2 949 2543 30190 1 1457 4573 33...
output:
3582496024 860310840 5337461878 10833286574 1397502876 3735482073 4207877274 17671620 10854427218 1484917319 5462491276 1497165465 1453546510 1672688712 1158344316 1014734250 3797802047 15668090927 14634073116 32337553147 2159971110 12088416736 90924880 1410366456 13829776128 12126485158 18393654569...
result:
ok 829 numbers
Subtask #2:
score: 0
Wrong Answer
Test #6:
score: 0
Wrong Answer
time: 29ms
memory: 7876kb
input:
99999 99998 1 5026 18575 27178 90423 3 30623 1 1 3 76936 1 1 1 77021 95683 84664 24734 1 46085 74886 40512 11266 3 5048 8594 22468 1 53318 77721 97151 70784 1 70645 91192 37556 13013 1 56752 56940 91812 62887 1 7928 34576 87339 69404 3 74875 32807 100970 3 22338 17221 25771 3 21421 20602 57957 3 717...
output:
0 0 13875 68164 8551 37356 51678 78688 9772 17674 28663 11002 102350 18755 36993 229473 61114 309657 445575 67332 280040 41468 565383 14241 245087 151356 35296 139339 108738 174373 21036 290401 205700 405809 35460 43749 209279 494612 42184 624800 245616 672241 71368 774313 1002309 259392 236613 8906...
result:
wrong answer 3rd numbers differ - expected: '1254619125', found: '13875'
Subtask #3:
score: 0
Wrong Answer
Test #12:
score: 0
Wrong Answer
time: 28ms
memory: 7888kb
input:
100000 99993 1 47773 70467 16065 1 2 52349 78446 2304 3 40821 1 1 1 40216 93069 78144 1 1 41089 43671 76025 1 2 35263 68629 31066 3 79881 13534 57327 3 5556 1 1 2 21962 38192 1 1 664 58116 9417 1 3 28089 6039 7989 2 88500 90302 9946 3 63215 49410 60770 2 11069 89527 57581 2 70303 97603 12363 1 3420 ...
output:
0 43794 0 1951 11361 129 898 29245 7969 1947 34972 16405 59952 123666 24537 68209 34537 0 32225 32066 0 31810 16824 96178 14285 299824 57614 1602 129470 61935 4068 114182 17609 152949 26099 179359 250368 4796 183349 125791 17414 61871 0 1 2698 183297 23029 54464 0 26259 204595 35604 1 1 18437 2914 1...
result:
wrong answer 20th numbers differ - expected: '37527', found: '32066'
Subtask #4:
score: 0
Wrong Answer
Test #17:
score: 0
Wrong Answer
time: 25ms
memory: 7764kb
input:
99999 99996 3 77889 1 10000000000 1 6316 86327 89644 386 3 9260 1 10000000000 2 2603 47234 69717 2 20260 73011 19290 2 62477 81233 26127 1 50140 68508 37004 98794 2 14449 22788 16063 1 43860 84932 50375 21777 1 67345 94584 28202 66610 2 661 68654 1 1 14411 94422 82738 61196 1 16563 94416 4920 38408 ...
output:
0 89644 0 0 605982 168323 37187 77150 186018 105774 186018 0 484192 310395 123690 71244 205528 220294 68770 150548 133985 133985 0 173864 67624 138658 71491 326069 190362 0 183158 202369 330620 266786 200713 105144 292978 0 154006 0 0 0 35935 233733 72404 152865 120200 114736 0 0 79361 10775 175869 ...
result:
wrong answer 2nd numbers differ - expected: '34602584', found: '89644'
Subtask #5:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%