QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#397468#5308. RPG Pro League2745518585WA 166ms11884kbC++202.6kb2024-04-24 10:13:452024-04-24 10:13:45

Judging History

你现在查看的是最新测评结果

  • [2024-04-24 10:13:45]
  • 评测
  • 测评结果:WA
  • 用时:166ms
  • 内存:11884kb
  • [2024-04-24 10:13:45]
  • 提交

answer

#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
typedef long long ll;
const int N=1000001;
int n,m,b[N],f[16],p[16],g[8];
bool h[N];
ll s;
struct str
{
    int a,b,t;
    friend bool operator<(str a,str b)
    {
        return a.b<b.b;
    }
}a[N];
set<str> Set[8][2];
void add(int x)
{
    if(h[x])
    {
        for(auto j=1;j<=15;++j) if(j&g[a[x].a]) --f[j];
        s-=a[x].b;
    }
    h[x]^=1;
    if(h[x])
    {
        for(auto j=1;j<=15;++j) if(j&g[a[x].a]) ++f[j];
        s+=a[x].b;
    }
}
int sum()
{
    int s=1e9;
    for(int i=1;i<=15;++i)
    {
        s=min(s,f[i]/p[i]);
    }
    return s;
}
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;++i)
    {
        static char z[5];
        z[0]=z[1]=z[2]=0;
        scanf("%s%d",z,&a[i].b);
        if(z[0]=='D'||z[1]=='D'||z[2]=='D') a[i].a|=1;
        if(z[0]=='S'||z[1]=='S'||z[2]=='S') a[i].a|=2;
        if(z[0]=='B'||z[1]=='B'||z[2]=='B') a[i].a|=4;
        a[i].t=i;
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=n;++i)
    {
        b[a[i].t]=i;
        a[i].t=i;
    }
    for(int i=1;i<=7;++i)
    {
        if(i&1) g[i]|=1;
        if(i&2) g[i]|=2;
        if(i&3) g[i]|=4;
        if(i&4) g[i]|=8;
    }
    for(int i=1;i<=15;++i) p[i]=p[i^(i&-i)]+1;
    for(int i=1;i<=n;++i) add(i);
    int q=sum();
    for(int i=n;i>=1;--i)
    {
        add(i);
        if(sum()<q) add(i);
    }
    // printf("%d %lld\n",q,s);
    for(int i=1;i<=n;++i)
    {
        Set[a[i].a][h[i]].insert(a[i]);
    }
    scanf("%d",&m);
    for(int i=1;i<=m;++i)
    {
        int x,k;
        scanf("%d%d",&x,&k);
        x=b[x];
        Set[a[x].a][h[x]].erase(a[x]);
        if(h[x]) s-=a[x].b;
        a[x].b=k;
        Set[a[x].a][h[x]].insert(a[x]);
        if(h[x]) s+=a[x].b;
        int u=0;
        ll v=s;
        for(int i=1;i<=7;++i)
        {
            int t=0;
            if(h[x])
            {
                if(!Set[i][0].empty()) t=Set[i][0].begin()->t;
            }
            else
            {
                if(!Set[i][1].empty()) t=prev(Set[i][1].end())->t;
            }
            if(t!=0)
            {
                add(x),add(t);
                if(sum()==q&&s<v) v=s,u=t;
                add(x),add(t);
            }
        }
        if(u!=0)
        {
            Set[a[x].a][h[x]].erase(a[x]);
            Set[a[u].a][h[u]].erase(a[u]);
            add(x),add(u);
            Set[a[x].a][h[x]].insert(a[x]);
            Set[a[u].a][h[u]].insert(a[u]);
        }
        printf("%lld\n",s);
    }
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3960kb

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: 166ms
memory: 11876kb

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: 156ms
memory: 11836kb

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: 151ms
memory: 11820kb

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: 136ms
memory: 11832kb

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: 155ms
memory: 11820kb

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: 143ms
memory: 11776kb

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: 146ms
memory: 11884kb

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: 126ms
memory: 11876kb

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: 0
Accepted
time: 147ms
memory: 11692kb

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...

output:

44681215929094
44681140738264
44680930941960
44681518144147
44682382390432
44682221858538
44682184620437
44682238048343
44681980767149
44682265890653
44682001502128
44682027275138
44682237188441
44682302542078
44682286644950
44681643705300
44681615590582
44681497821291
44681221388134
44682128554988
...

result:

ok 100000 numbers

Test #11:

score: 0
Accepted
time: 157ms
memory: 11696kb

input:

100000
BDS 896623632
S 727737495
S 575894623
DB 87537832
S 392667603
S 454633578
B 848685103
BS 871609322
B 934539797
D 721419925
BDS 402351750
S 154060393
DB 8064179
S 323796100
DBS 478313825
B 576680349
DSB 326542444
S 847087723
BD 316375670
D 676173497
D 206424750
BDS 891334275
DB 32418913
SD 574...

output:

46778674719333
46778848243922
46778957655091
46778937757904
46778899686335
46778941204115
46779048062288
46779205742495
46779469558777
46779396882706
46778679387011
46778246708121
46777492984199
46777042157595
46777151909181
46777537135258
46777670986261
46777789945939
46778245232217
46777814046064
...

result:

ok 100000 numbers

Test #12:

score: 0
Accepted
time: 144ms
memory: 11756kb

input:

100000
B 209787110
S 743547852
BDS 632112547
DSB 835672184
SBD 542035029
SDB 679878940
D 799107065
DB 96949934
B 381373295
S 894375953
SB 523946265
DBS 25024985
D 24381368
D 542488317
DB 888440956
SD 737136220
SD 646535540
DS 692254809
DSB 688491183
DS 202691109
DSB 615672839
B 975992261
DB 76178577...

output:

42579864423434
42580017947180
42580061595055
42581027647286
42581235297075
42581252060401
42580753810484
42580508092543
42581187959009
42581255726469
42581819067734
42581643117279
42581732924457
42582183780563
42582064698786
42582707711867
42582376025312
42582433674019
42582377573748
42582076215383
...

result:

ok 100000 numbers

Test #13:

score: -100
Wrong Answer
time: 120ms
memory: 11828kb

input:

100000
DB 1
D 2
DSB 3
S 4
DSB 5
D 6
S 7
D 8
D 9
DS 10
SBD 11
BS 12
DSB 13
S 14
D 15
SBD 16
BDS 17
DS 18
SDB 19
BS 20
S 21
S 22
B 23
SBD 24
BD 25
BDS 26
D 27
DSB 28
BS 29
BS 30
B 31
B 32
S 33
B 34
D 35
DB 36
SB 37
BD 38
D 39
DB 40
S 41
DB 42
SB 43
BDS 44
B 45
SBD 46
DBS 47
B 48
DSB 49
DBS 50
DSB 51
D...

output:

4474057839
4474157836
4474257831
4474357824
4474457815
4474557804
4474657791
4474757776
4474857759
4474957740
4475057719
4475157696
4475257671
4475357644
4475457615
4475557584
4475657551
4475757516
4475857479
4475957440
4476057399
4476157356
4476239587
4476339540
4476439491
4476539440
4476639387
447...

result:

wrong answer 87257th numbers differ - expected: '5572397858', found: '5572397863'