QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#602943#8548. China Convex Polygon Contestucup-team4153TL 22ms7812kbC++172.4kb2024-10-01 13:42:332024-10-01 13:42:44

Judging History

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

  • [2024-10-01 13:42:44]
  • 评测
  • 测评结果:TL
  • 用时:22ms
  • 内存:7812kb
  • [2024-10-01 13:42:33]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
const int INF=2e9;
int t,n,m;
int a[N],b[N];
bool visa[N],visb[N];
int dp[2][2][N];
vector<int>vec;
int main(){
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>t;
    while(t--){
        cin>>n>>m;
        vec.clear();
        for(int i=1;i<=n;i++){
            cin>>a[i];
            vec.push_back(a[i]);
        }
        for(int i=1;i<=n;i++){
            cin>>b[i];
        }
        sort(b+1,b+n+1);
        for(int i=1;i<=n;i++){
            b[i]+=b[i-1];
            if(b[i]<=m)vec.push_back(b[i]);
        }
        vec.push_back(m);
        sort(vec.begin(),vec.end());
        vec.erase(unique(vec.begin(), vec.end()),vec.end());
        int cnt=vec.size();
        for(int i=0;i<cnt;i++){
            visa[i]=false;
            visb[i]=false;
        }
        for(int i=1;i<=n;i++){
            visa[lower_bound(vec.begin(), vec.end(),a[i])-vec.begin()]=true;
            if(b[i]<=m)visb[lower_bound(vec.begin(), vec.end(),b[i])-vec.begin()]=true;
        }
        bool flag=true;
        for(int op=0;op<2;op++){
            for(int j=0;j<n;j++){
                dp[flag][op][j]=-INF;
            }
        }
        dp[flag][0][0]=0;
        for(int i=0;i<cnt;i++){
            flag=!flag;
            for(int op=0;op<2;op++){
                for(int j=0;j<n;j++){
                    dp[flag][op][j]=-INF;
                }
            }
            for(int op=0;op<2;op++){
                for(int j=0;j<n;j++){
                    int nxtj=j+visb[i],res=dp[!flag][op][j];
                    if(res==-INF)continue;
                    if(op==1)res+=vec[i]-vec[i-1];
                    if(nxtj){
                        dp[flag][1][nxtj-1]=max(dp[flag][1][nxtj-1],res);
                    }
                    if(visa[i])dp[flag][0][nxtj]=max(dp[flag][0][nxtj],res);
                    else dp[flag][op][nxtj]=max(dp[flag][op][nxtj],res);
                }
            }
            for(int op=0;op<2;op++){
                for(int j=0;j<n;j++){
                    if(dp[flag][op][j]==-INF)continue;
                }
            }
        }
        int ans=0;
        for(int op=0;op<2;op++){
            for(int j=0;j<n;j++){
                if(dp[flag][op][j]==-INF)continue;
                ans=max(ans,dp[flag][op][j]);
            }
        }
        cout<<ans<<'\n';
    }

    return 0;
}
/*

 */

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 7732kb

input:

3
3 10
1 5 9
1 2 3
3 10
1 5 9
1 1 4
3 10
1 5 9
1 5 10

output:

9
9
7

result:

ok 3 number(s): "9 9 7"

Test #2:

score: 0
Accepted
time: 21ms
memory: 5644kb

input:

10000
9 879847766
125098132 150509852 181700303 196375322 519766842 560891576 609151480 721527163 805167083
99031467 66330518 6283986 21388462 41109537 83628243 116141243 144052767 192448599
8 30
5 12 16 19 20 23 25 27
3 1 1 4 2 8 2 3
8 30
4 10 13 16 17 20 23 27
6 3 1 2 3 4 7 2
7 586479012
37693706 ...

output:

858888761
28
27
548785306
28
875933380
27
803763192
942603170
720683076
536166430
759475944
28
27
28
886112586
27
28
28
727698126
28
27
29
28
28
28
28
27
28
819730903
755946410
28
26
28
792662140
891539003
583799124
817190966
934413263
28
28
865467960
27
27
29
488557236
27
26
618111955
28
27
8328741...

result:

ok 10000 numbers

Test #3:

score: 0
Accepted
time: 21ms
memory: 5628kb

input:

10000
8 921979410
2012452 24917627 294894613 360777223 466409663 571239725 717231773 737720960
44502046 158432459 29280108 46756101 343060886 113805663 122292234 18336789
9 996365984
93547621 418854579 432723524 452103231 472239725 534297866 551979311 643474068 796448288
94769801 184799140 40559247 ...

output:

897061783
958809789
518874667
508026272
25
817915823
563445073
755045438
917466401
26
27
963697076
28
857532778
28
28
28
599907462
733717366
861642961
553806595
802417186
26
29
29
29
26
27
908132071
816055107
862993074
29
28
27
28
882732250
585539614
900924232
28
556635369
29
890134472
29
636599530
...

result:

ok 10000 numbers

Test #4:

score: 0
Accepted
time: 21ms
memory: 5720kb

input:

10000
10 693426682
39824378 170753052 172063351 204664113 232271632 245840174 254784959 390184491 453231487 570861818
59595344 22173087 116391450 143121946 23632190 35151525 70352626 30324904 25656706 163522735
8 745209526
121015828 125758181 231986462 461404045 468707947 717366997 738929033 7446472...

output:

655017612
738487472
27
27
626514952
500700122
849903776
29
28
921304686
28
28
28
511049979
28
964808180
611201804
970483767
27
860011940
29
508674850
932159377
948125850
876572563
27
27
575252625
663694866
28
28
27
29
964824235
29
675855993
706402286
754992051
871698228
662676082
27
27
709260574
28
...

result:

ok 10000 numbers

Test #5:

score: 0
Accepted
time: 22ms
memory: 7656kb

input:

10000
9 842080350
126196899 281629390 459021362 589053377 623175793 685983677 686703503 729586222 758579378
139044583 175581708 4917601 53914562 1222336 149353315 84085936 136084484 1513682
10 722336436
66051155 127735998 212633619 309660895 320820247 433981470 582010812 605111593 662898478 67592938...

output:

840138188
695635705
27
488244927
611314272
28
29
776832666
523082033
510786580
29
665355993
834007553
26
28
28
27
596775460
27
601211316
508521258
27
29
618048411
550827368
28
685403346
28
548465042
28
717225955
27
28
882022106
844126870
677316532
649858373
25
28
27
559237354
27
29
497165741
28
5888...

result:

ok 10000 numbers

Test #6:

score: 0
Accepted
time: 17ms
memory: 5632kb

input:

10000
8 708514163
23962271 40872775 157099307 187103309 187292974 402257538 501178818 704015400
25220820 70022938 15019601 105088431 93501133 257255953 42050187 77267678
7 30
3 7 14 15 18 25 28
2 2 4 2 5 4 8
10 30
1 3 6 10 14 16 18 21 23 29
1 2 1 1 1 4 3 1 9 2
8 30
6 11 15 19 20 21 26 27
1 1 2 5 12 ...

output:

684362227
27
29
27
28
793316719
779926027
705604988
27
27
29
27
762714343
590862983
651453477
27
29
906481542
609791490
655735160
825013581
27
589806786
769457681
559647071
676833126
28
28
565082202
29
29
29
605930903
736724745
496276423
735975647
27
752861191
498615546
696968479
872153866
847512710...

result:

ok 10000 numbers

Test #7:

score: 0
Accepted
time: 18ms
memory: 7684kb

input:

10000
9 30
10 13 17 20 24 26 27 28 29
2 2 2 7 1 2 1 7 1
7 831527343
75686598 280691289 496275248 534534697 652168969 665687389 764253502
41653637 35883907 77174475 169783531 134532994 338354 215483430
8 718484116
100189900 124378121 342235912 403546854 508604060 531760359 621198327 671653286
1603436...

output:

28
817670569
694754999
26
27
812629714
27
553368309
749769223
28
27
869423605
927591951
28
868501917
27
554113115
27
757872877
834811859
28
27
28
29
552439238
735169432
876903178
581459092
28
27
657892555
26
886754984
28
686160103
789538336
981411102
510312850
890648943
770480532
583276901
718986202...

result:

ok 10000 numbers

Test #8:

score: 0
Accepted
time: 22ms
memory: 7672kb

input:

10000
10 30
3 4 6 14 17 18 20 22 25 29
2 6 3 3 5 1 3 1 2 2
10 30
6 11 15 16 19 20 23 26 28 29
1 3 2 4 1 4 2 4 2 5
7 600683054
113738178 144331374 193930552 194822106 386416391 476890041 530562637
128835461 23989891 53437985 88589084 2092213 37690603 190105270
8 853858494
17017766 188244392 228267168...

output:

28
28
597699287
797386235
727159057
565049429
828474455
27
895177696
28
594056778
912193740
27
620191871
852100623
29
28
27
943358883
580553291
26
29
29
642061746
28
874798456
27
541562041
28
29
642682965
27
28
824610759
28
486459828
704550861
483902395
29
28
27
28
618648751
633419081
533827057
28
2...

result:

ok 10000 numbers

Test #9:

score: 0
Accepted
time: 21ms
memory: 7812kb

input:

10000
10 794490958
33950165 102613172 233931653 294328727 365866988 394195990 502295599 533500764 697722342 789065736
117636901 56842505 67344689 12693883 43898025 33184559 25296165 165237670 98913433 85684653
7 583412616
79630060 103778160 178797644 347021280 412084871 412242198 437485086
22767799 ...

output:

760540793
554564585
27
28
956701395
25
29
28
28
27
28
28
28
616705831
26
28
28
28
28
27
27
27
470127478
28
562109534
638390996
937834685
702323118
665789596
734137704
26
28
826636157
645678237
641375059
791320618
769654094
28
27
868850069
836416112
29
29
28
825545237
831096007
29
28
579941952
28
29
...

result:

ok 10000 numbers

Test #10:

score: 0
Accepted
time: 21ms
memory: 5712kb

input:

10000
7 620163263
2210088 111033028 213072508 221754874 270340156 465271372 605401151
6589256 133531932 80578109 1717576 194259279 19940297 73135525
8 821458748
94147403 103911199 119213944 148910116 274334138 396035434 415716320 720330739
17483998 40595682 113502043 152348211 87133614 140810847 126...

output:

617953175
759227323
28
577328355
863285321
667218327
29
28
27
28
815536760
559280576
503382454
27
854334502
533028547
967848554
28
767236520
527447546
27
28
625532436
557267576
964127503
27
941231576
648972067
627806338
27
27
685426661
28
27
500624304
27
896818489
29
29
762801184
27
28
27
28
28
7797...

result:

ok 10000 numbers

Test #11:

score: 0
Accepted
time: 14ms
memory: 7728kb

input:

10000
8 748462261
126938743 298205026 460858560 493696867 561517982 598369982 611594963 660762051
9836010 43420294 113911448 87081999 64171127 65191414 117828249 86952635
9 818975929
111152475 125419210 135487970 248358986 365050068 500993620 620295174 693052429 740583941
4529198 15575283 36039923 1...

output:

725401270
790111236
28
742737637
803407267
947164183
576552794
29
27
28
29
28
28
874730861
27
855768639
26
28
911087029
26
28
27
583592147
28
813229697
26
614462355
28
514365649
28
621277915
27
472160914
860353209
559573286
28
27
728087897
26
726726326
28
29
855714743
880622108
27
28
924203964
27
85...

result:

ok 10000 numbers

Test #12:

score: 0
Accepted
time: 21ms
memory: 5700kb

input:

10000
8 796414787
31461520 50761715 90495707 251124998 341850881 720825960 773620389 780205466
54722380 216907544 23636692 98146858 23139876 206884562 69929854 45979367
8 870995852
157940387 214396482 255563234 292144526 336132163 634226211 655076826 795592633
219513340 91244154 123598065 6795235 13...

output:

762693039
806768710
736355372
26
28
28
729100973
862887449
570384939
28
594631648
676565090
28
913095700
562500308
673390494
28
28
655289472
27
28
28
28
29
888685546
690676876
835447840
632836562
666794814
28
908883242
864921023
643425480
652704139
29
893801977
848367692
681211139
760058749
61436934...

result:

ok 10000 numbers

Test #13:

score: -100
Time Limit Exceeded

input:

1
93849 788867517
27106 35801 44166 45367 71580 75909 79832 80217 88191 125196 128361 161338 162562 166454 169706 187030 193620 198170 213307 218172 219965 224851 227874 234787 249446 254210 260203 261675 266494 275046 281192 287637 294087 302671 329113 334903 352098 375155 393228 400443 406748 4227...

output:


result: