QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#416542 | #5308. RPG Pro League | grass8cow | TL | 59ms | 8228kb | C++17 | 2.6kb | 2024-05-21 22:36:06 | 2024-05-21 22:36:07 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int n;
#define ll long long
#define pi pair<int,int>
#define fi first
#define se second
struct ksd{
priority_queue<pi>p1,p2;
int ty;
inline void push(int x,int z){if(ty)z=-z;p1.push({z,x});}
inline void del(int x,int z){if(ty)z=-z;p2.push({z,x});}
inline void rel(){while(!p1.empty()&&!p2.empty()&&p1.top()==p2.top())p1.pop(),p2.pop();}
inline pi top(){rel();pi ag=p1.top();if(ty)ag.fi=-ag.fi;return ag;}
bool empty(){rel();return p1.empty();}
}L[16],R[16];
char S[3];
int tx[16];
bool vis[100100];
ll sum;
int pp[16],zd,a[100100],so[101000];
const int I=1e9+7;
void ao(int x,int z){for(int i=0;i<16;i++)if(x&i)tx[i]+=z;}
void tryout(){
int st=0;
for(int s=1;s<16;s++)
if(tx[s]==zd*pp[s])st|=s;
int mx=-1,s2=-1;
for(int i=0;i<16;i++)if(!(i&st)&&!L[i].empty()){
int oo=L[i].top().fi;
if(mx<oo)mx=oo,s2=i;
}
assert(s2!=-1);
st=s2;pi is=L[st].top();
ao(st,-1);
sum-=mx,L[st].del(is.se,is.fi),R[st].push(is.se,is.fi),vis[is.se]=0;
}
void tryin(){
int st=15;
for(int s=1;s<16;s++)if(tx[s]<zd*pp[s])st&=s;
int mi=I,s2=-1;
for(int i=0;i<16;i++)if((i&st)&&!R[i].empty()){
int oo=R[i].top().fi;
if(mi>oo)mi=oo,s2=i;
}
assert(s2!=-1);
st=s2;pi is=R[st].top();
ao(st,1);
sum+=mi,R[st].del(is.se,is.fi),L[st].push(is.se,is.fi),vis[is.se]=1;
}
int gx[101000];
int main(){
scanf("%d",&n);
for(int i=0;i<16;i++)R[i].ty=1;
for(int i=1;i<=n;i++){
gx[i]=i;
scanf("%s%d",S,&a[i]);int O=strlen(S),st=0;
for(int j=0;j<O;j++){
if(S[j]=='D')st|=9;
if(S[j]=='S')st|=10;
if(S[j]=='B')st|=4;
}
ao(st,1),so[i]=st;
}
zd=n+1;
for(int s=1;s<16;s++)
pp[s]=pp[s>>1]+(s&1),zd=min(zd,tx[s]/pp[s]);
sort(gx+1,gx+n+1,[&](int x,int y){return a[x]<a[y];});
for(int i=n;i;i--){
int u=gx[i];
int st=0;for(int s=1;s<16;s++)if(tx[s]==zd*pp[s])st|=s;
if(st&so[u])L[so[u]].push(u,a[u]),sum+=a[u],vis[u]=1;
else R[so[u]].push(u,a[u]),ao(so[u],-1);
}
int q;scanf("%d",&q);
for(int i=1,x,z;i<=q;i++){
scanf("%d%d",&x,&z);
if(vis[x]){
sum-=a[x],ao(so[x],-1);
vis[x]=0,L[so[x]].del(x,a[x]),a[x]=z,R[so[x]].push(x,a[x]);
tryin();
}
else{
vis[x]=1,ao(so[x],1);
R[so[x]].del(x,a[x]),a[x]=z,L[so[x]].push(x,a[x]);
sum+=a[x];
tryout();
}
printf("%lld\n",sum);
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3816kb
input:
5 BS 3 D 3 B 2 D 4 D 5 2 5 2 1 5
output:
10 12
result:
ok 2 number(s): "10 12"
Test #2:
score: 0
Accepted
time: 59ms
memory: 8200kb
input:
100000 B 727564174 S 231637747 D 246625257 S 975124756 D 844292741 S 809641006 B 396062588 B 883224128 B 311130283 S 434433581 S 509817048 S 993501344 S 508399542 B 279564062 D 950946642 D 819528264 D 412285620 B 968540732 S 953428318 D 902181790 S 172330493 D 725075 B 135580649 D 714478555 B 466916...
output:
40721766963064 40720937650054 40721120372880 40720722768213 40721029809776 40720546822562 40719680807733 40720084910620 40720153432078 40720873952927 40721146683113 40721696875436 40722235723316 40722133896063 40723047443192 40723419347010 40722633976087 40722282806304 40722071958869 40721278798949 ...
result:
ok 100000 numbers
Test #3:
score: 0
Accepted
time: 56ms
memory: 8136kb
input:
100000 S 139759881 S 606246897 D 295439937 S 30506154 B 815842927 D 195502949 S 172358189 B 763560428 S 862087943 B 413481091 B 775973599 B 336841814 S 116523655 D 670479401 S 405979654 D 246440323 B 764165518 S 20267667 S 327264314 B 44539411 B 353491632 D 5202858 S 842200033 S 337952200 D 6150168 ...
output:
40524529913817 40524860528295 40524824503871 40524293726866 40524353142964 40524176391157 40524132308308 40524134826811 40524107274580 40524341365401 40524194084164 40524572093940 40524910630137 40525296284478 40525633925207 40525793456210 40526041232042 40526041232042 40526144290799 40526737278038 ...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 51ms
memory: 8228kb
input:
100000 B 567185557 S 731841946 S 365565517 D 767568967 B 450159068 D 658059427 S 790559143 B 356623472 S 541664149 D 447906802 B 407933323 S 403512209 D 187294244 D 351683584 S 504286757 D 212023807 B 51119045 S 84059041 S 819097063 D 115224344 B 104478594 B 446088838 D 153595287 S 749172175 S 57160...
output:
40639770818547 40639473223932 40639909468709 40639327970968 40639021798510 40639377404325 40638848317225 40638755074708 40638463360482 40638463360482 40638225443217 40638907566106 40638907566106 40638707391259 40638642781389 40638809562003 40637986313647 40637481713492 40636989271046 40636464147095 ...
result:
ok 100000 numbers
Test #5:
score: 0
Accepted
time: 50ms
memory: 7864kb
input:
100000 BS 609181774 BS 498815665 BS 729225393 S 366911976 D 192782776 DB 109052372 D 927091614 SD 120687185 D 619604491 DB 405398892 BS 947957264 DB 134896320 S 909342292 DS 374808683 SD 810910022 D 636083341 D 719767505 D 576713707 DB 327091245 SD 128393617 B 464665485 DB 186653465 S 50744850 BS 31...
output:
49922035989330 49921636770968 49921944461352 49922449756073 49922666981649 49922155391929 49922220626762 49922165472452 49922033364853 49922182879778 49922118499498 49921629498341 49921194947559 49921237943096 49920830551816 49920785993225 49921523763744 49920936362665 49920399195989 49920353383077 ...
result:
ok 100000 numbers
Test #6:
score: 0
Accepted
time: 59ms
memory: 7352kb
input:
100000 S 46980313 DS 746577279 S 119614887 D 32418943 B 952739459 S 532231646 SD 559263381 DS 631559122 SB 335561329 SD 935559531 DB 548708848 BD 8298741 DS 403723074 DS 559038896 SB 43327419 SD 430897629 B 483781810 B 31916773 B 39977980 S 405078517 D 323989135 SD 584417860 SB 776661769 D 467791168...
output:
42348275359402 42348652439619 42348713198459 42348631107452 42349074844557 42349760441910 42349962186466 42350429498431 42350447771721 42350361082730 42349972717124 42350266522340 42350463555914 42351167696055 42350739802238 42350725554192 42351107085086 42350772822134 42349881535618 42350109052615 ...
result:
ok 100000 numbers
Test #7:
score: 0
Accepted
time: 58ms
memory: 7488kb
input:
100000 BS 213295369 B 455710761 SB 373454236 DB 673322458 S 651168441 BS 359903245 BD 751934633 SD 632609134 S 358152611 S 160649972 D 146822438 B 754830402 B 385092410 B 851559764 DS 481485147 B 224375164 D 961859623 DB 985459185 B 582943091 B 316407251 DS 305843239 DS 723438991 S 53429344 B 523111...
output:
45600208273121 45600317533935 45600175773836 45600173792927 45599452402298 45599812001804 45599878168987 45600637494399 45600782960729 45601107349004 45601024544203 45600077092341 45600360724694 45600356341282 45600663553626 45600478170427 45601258145258 45601572720352 45601860925268 45602282587440 ...
result:
ok 100000 numbers
Test #8:
score: 0
Accepted
time: 56ms
memory: 7264kb
input:
100000 S 716049090 D 833450560 SD 670462747 SB 446815258 B 384907056 D 984726104 SB 462243694 D 922590298 BD 759638240 DS 19626890 SB 248370274 SD 668142001 D 335754916 B 726719900 BD 453285618 D 322601083 D 748915428 DB 977946001 BD 918781134 SB 548154938 S 732129575 B 165403934 DB 307460261 B 5705...
output:
49045162855443 49045050545344 49045590587244 49046369263442 49046304995206 49045800881106 49045291887266 49045217335835 49044870222977 49044225198944 49044835834249 49045020093554 49045243504559 49045344873512 49045291814515 49044883632804 49044186683347 49043700349817 49044284292286 49044627186893 ...
result:
ok 100000 numbers
Test #9:
score: 0
Accepted
time: 49ms
memory: 7760kb
input:
100000 D 960395655 B 122062291 SB 943474832 S 570975390 B 123731786 S 774351291 SD 856577683 DS 198978387 BS 934036917 BS 91010215 DS 387466221 BD 12179611 BS 860542232 BD 330196269 SB 26230686 S 732137135 D 536823278 DS 596330655 D 526094623 S 676662638 BD 894521450 SD 208119759 S 825586140 DS 7300...
output:
50012421513787 50012188224437 50012089226755 50012449040900 50012737290301 50012412928158 50012451727620 50013117114082 50013616855009 50013660180722 50013565703915 50013578958010 50013544230467 50013431019751 50013791549050 50013557409907 50013800945077 50013305887273 50013458257335 50013127389538 ...
result:
ok 100000 numbers
Test #10:
score: -100
Time Limit Exceeded
input:
100000 BD 167885928 B 410609125 B 867926765 D 25698987 B 964971589 DSB 761993255 D 716924891 SDB 449179974 D 655788083 DSB 251063578 BSD 636094691 SBD 269449771 D 416812799 S 196094133 BDS 899848895 BSD 201208478 SDB 654682908 S 210099670 S 459258687 SD 787381819 SDB 75643134 B 794516075 B 341054234...