QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#416520 | #5308. RPG Pro League | grass8cow | RE | 0ms | 0kb | C++17 | 2.2kb | 2024-05-21 22:08:08 | 2024-05-21 22:08:09 |
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
set<pi>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].end())).fi;
if(mx<oo)mx=oo,s2=i;
}
assert(s2==-1);
st=s2;pi is=*(--L[st].end());
ao(st,-1);
sum-=mx,L[st].erase(is),R[st].insert(is),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].begin()).fi;
if(mi>oo)mi=oo,s2=i;
}
assert(s2!=-1);
st=s2;
pi is=*R[st].begin();
ao(st,1);
sum+=mi,R[st].erase(is),L[st].insert(is),vis[is.se]=1;
}
int gx[101000];
int main(){
scanf("%d",&n);
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]].insert({a[u],u}),sum+=a[u],vis[u]=1;
else R[so[u]].insert({a[u],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]].erase({a[x],x}),a[x]=z,R[so[x]].insert({a[x],x});
tryin();
}
else{
vis[x]=1,ao(so[x],1);
R[so[x]].erase({a[x],x}),a[x]=z,L[so[x]].insert({a[x],x}),
sum+=a[x];
tryout();
}
printf("%lld\n",sum);
}
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
5 BS 3 D 3 B 2 D 4 D 5 2 5 2 1 5