QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#615271#5453. Mana CollectionDimash8.333333 2935ms87264kbC++232.9kb2024-10-05 17:58:212024-10-05 17:58:23

Judging History

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

  • [2024-10-05 17:58:23]
  • 评测
  • 测评结果:8.333333
  • 用时:2935ms
  • 内存:87264kb
  • [2024-10-05 17:58:21]
  • 提交

answer

#include <bits/stdc++.h>
    
using namespace std;
    
typedef long long ll;
const int  N = 22, MOD = (int)1e9 + 7;
const ll inf = 1e18;

int n, m;
ll d[N][N], c[N], dp[(1 << 19) + 1][20], s[(1 << 19) + 1];
void prec() {
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            for(int k = 0; k < n; k++) {
                d[j][k] = min(d[j][k], d[j][i] + d[i][k]);
            }
        }
    }
    for(int i = 0; i < (1 << n); i++) {
        for(int j = 0; j < n; j++) {
            if((i >> j) & 1) {
                s[i] += c[j];
                if(__builtin_popcount(i) != 1) {
                    dp[i][j] = inf;
                }
            }
        }
    }
}

struct line{
    ll k, b;
    ll get(ll x) {
        return k * x + b;
    }
};
vector<line> st[N];
vector<array<ll, 2>> f[N];


bool check(line x, line y, line z) {
    return (x.b - y.b) * (z.k - y.k) >= (y.b - z.b) * (y.k - x.k);
}
void add(int i, line x) {
    while((int)st[i].size() >= 2 && check(st[i][(int)st[i].size() - 2], st[i].back(), x)) {
        st[i].pop_back();
    }
    st[i].push_back(x);
}
ll get(int i, ll x) {
    ll ret = 0;
    for(auto j:st[i]) {
        ret = max(ret, j.get(x));
    }
    return ret;
}
void test() {
    cin >> n >> m;
    for(int i = 0; i < n; i++) {
        cin >> c[i];
    }
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            d[i][j] = inf;
        }
        d[i][i] = 0;
    }
    for(int i = 1; i <= m; i++) {
        int a, b, t;    
        cin >> a >> b >> t;
        a--;
        b--;
        d[a][b] = t;
    }
    prec();
    for(int i = 0; i < (1 << n); i++) {
        for(int j = 0; j < n; j++) {
            if((i >> j) & 1) {
                for(int k = 0; k < n; k++) {
                    if(!((i >> k) & 1)) {
                        int nv = (i + (1 << k));
                        if(d[j][k] == inf) continue;
                        dp[nv][k] = min(dp[nv][k], dp[i][j] + s[i] * 1ll * d[j][k]);
                    }
                }
            }
        }
    }
    for(int i = 0; i < (1 << n); i++) {
        for(int j = 0; j < n; j++) {
            if((i >> j) & 1) {
                f[j].push_back({s[i], -dp[i][j]});
            }
        }
    }
    for(int i = 0; i < n; i++) {
        sort(f[i].begin(), f[i].end());
        for(auto [k, b]:f[i]) {
            add(i, {k, b});
        }
    }
    int q;
    cin >> q;

    while(q--) {
        int t, e;
        cin >> t >> e;
        e--;
        ll res = get(e, t);
        // for(int i = 0; i < (1 << n); i++) {
        //     if((i >> e) & 1) {
        //         res = max(res, s[i] * 1ll * t - dp[i][e]);
        //     }
        // }
        cout << res << '\n';
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); 
    
    int t = 1; 
    // cin >> t;
    
    while(t--) 
        test();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Pretests


Final Tests

Test #1:

score: 4.16667
Accepted
time: 1ms
memory: 5588kb

input:

2 1
1 10
1 2 10
4
5 1
5 2
100 1
100 2

output:

5
50
100
1090

result:

ok 4 number(s): "5 50 100 1090"

Test #2:

score: 4.16667
Accepted
time: 1ms
memory: 5668kb

input:

4 8
50000000 100000000 20000000 70000000
1 2 20
2 1 50
2 3 90
1 3 40
3 1 10
4 1 25
1 4 5
4 3 70
3
8 3
1000000000 1
500000 4

output:

160000000
239999988050000000
119992550000000

result:

ok 3 number(s): "160000000 239999988050000000 119992550000000"

Test #3:

score: 0
Wrong Answer
time: 1ms
memory: 5644kb

input:

10 90
95677166 99413032 90081107 97391055 96848266 92520734 90623124 96509760 95451402 99152599
1 10 94105173
3 9 91922842
5 2 90862613
8 3 94419460
4 7 90084016
6 4 90693719
10 8 97125103
2 1 93286961
5 10 91546334
4 8 92053784
8 5 96537357
3 1 95913083
1 3 95054163
2 8 95986698
7 6 95233705
8 10 9...

output:

9987653574340024
459620067337423078
200595475148225200
241176124268175432
129161772649708048
56895802804829940
48722447930695744
18639847679056794
377619800822577680
72147931716614577
180346027502829765
19802914427454613
46626656205575946
361567236091527343
112547547611623245
8302451008105476
181384...

result:

wrong answer 1st numbers differ - expected: '11703326493772984', found: '9987653574340024'

Test #4:

score: 0
Wrong Answer
time: 1ms
memory: 5712kb

input:

10 90
48104151 45958764 10384927 58976477 4508220 48401738 63414134 56241331 43456656 5364282
4 3 34321182
3 8 6111111
10 3 89336838
7 6 15869517
9 6 45416322
6 8 65416493
8 7 68165563
1 10 17098910
5 7 23144280
10 5 41059929
4 5 83655589
8 2 11141593
10 4 47789741
6 4 15702833
6 5 3119771
9 5 79973...

output:

3304702166591849
35976110096853641
4586294248391907
7792056794434831
1121889828581088
9265265357185194
281310401340040631
16458738554540088
62633383479101386
43456656
3514032245442476
374184651748191311
964047290046821
121256090010174
32299476475104361
772476708605571
49695253783447186
4390366261914...

result:

wrong answer 1st numbers differ - expected: '3586313126541447', found: '3304702166591849'

Test #5:

score: 0
Wrong Answer
time: 27ms
memory: 5772kb

input:

10 87
61275784 16282886 58999609 52155395 53012427 89533414 15431931 35150033 58505854 59445220
9 5 3496028
7 6 17372183
8 1 287847
2 7 19991219
4 5 40820118
4 9 38405375
1 4 52061958
1 3 95765844
9 7 88432897
10 3 62181295
2 4 2070594
6 8 38490628
5 1 74834920
5 2 58054124
5 10 53052912
9 10 799932...

output:

18478170631076827
20776419606475196
8525943703644941
17683529229731121
89156978276985
1268972571952932
8146088252046344
148783617369660
309113940077051823
178911980768416
35871044095338425
7056435584455468
20959051195083681
14730768570927101
3564062127995410
20333628539761179
2507688326353499
387086...

result:

wrong answer 1st numbers differ - expected: '18729278111132298', found: '18478170631076827'

Test #6:

score: 0
Wrong Answer
time: 28ms
memory: 5708kb

input:

10 90
95356560 91592390 93197917 98740065 97680300 92412698 94329246 97243226 90272368 97469569
10 6 99745186
9 3 93877572
4 3 95758698
6 10 91855996
5 1 90121278
5 4 95076290
8 2 99231614
10 3 93399573
4 1 91994993
6 5 94052740
5 2 96068955
2 10 91338395
7 10 91890588
4 7 94880828
1 6 96554961
7 5 ...

output:

159407460084106797
158889128200321254
314608459215663952
27662799249409727
94231802724156575
58666107389118805
1430138781796740
52393449794002575
369797341610245871
15356812520444400
16854853864750770
515435644424449526
16172296984009200
220695044256426336
94931108141822441
242592999471131165
275858...

result:

wrong answer 1st numbers differ - expected: '163280051600495389', found: '159407460084106797'

Test #7:

score: 0
Wrong Answer
time: 33ms
memory: 5988kb

input:

10 89
93795458 90122950 90809309 91512557 99759510 98879743 90406791 91988172 98723686 97265654
3 1 92410620
6 10 787488884
1 7 872243221
5 10 93057933
8 3 90945371
7 4 94869387
1 4 90377187
9 1 92060643
10 8 98532700
9 5 97326866
10 2 98947943
1 6 96415500
10 4 92676865
8 7 92985312
9 6 98444476
1 ...

output:

73482070523537997
14114824809566458
27572990010044131
27692175491361791
61893154460723373
196433805887078386
278837132944765932
134715894920521387
71597342969557209
487594284918169540
74344107269049267
8265311830154500
390223995148020862
423307921353158240
220801033260941078
86733275571528205
400522...

result:

wrong answer 1st numbers differ - expected: '96011873276486328', found: '73482070523537997'

Test #8:

score: 0
Wrong Answer
time: 27ms
memory: 5704kb

input:

10 89
1382293 67193843 93859961 477481 92652257 99885499 50256117 70192761 34119368 16710544
9 10 42167550
5 8 37587488
6 1 39681485
2 6 83885591
2 8 63502599
2 7 96584704
3 2 28849619
1 2 89615158
7 6 49082361
6 7 6114228
6 10 45456432
7 4 87603741
1 8 8377024
5 9 3400067
10 4 42824742
8 1 34659500...

output:

1487103845432704
44473794879167166
34795660921406235
27317723188808
46010195201943364
90621756903489777
24827329957707809
720752115223263
22833916240965065
33452321319032245
35012500150605
613628626300050
13461926383661340
998405266972404
1818424411309
1581856764360885
34119368
778135476720094
61723...

result:

wrong answer 1st numbers differ - expected: '5212184985750879', found: '1487103845432704'

Test #9:

score: 0
Wrong Answer
time: 37ms
memory: 8048kb

input:

10 90
97766575 91352441 94775266 90513638 95828190 90356289 90495007 98680228 93010243 98543991
1 3 99109059
5 8 90074960
6 5 90055463
6 1 90819495
8 9 98346448
8 5 90223065
10 9 92780029
3 6 90250424
9 1 96050114
7 3 90956675
4 2 92037130
4 7 90691071
2 3 91565269
8 3 94131990
2 9 97006947
4 10 942...

output:

8490080385132533
175007490297216232
17230835522215195
38439050177026963
175007490297216232
62181302867458746
9534838453822008
192353914561897707
159309837481951878
6191082227085588
173337633530057015
70956588106343578
16879438636799756
122774753080745502
156275640151508025
45181275164230096
38106009...

result:

wrong answer 1st numbers differ - expected: '8773129927176957', found: '8490080385132533'

Test #10:

score: 0
Wrong Answer
time: 362ms
memory: 87264kb

input:

18 306
97592575 5845225 97094410 61652068 60514373 77053365 82408570 65859870 52309184 11075991 79663473 60429988 64440299 88087418 51883591 39638284 31941363 95790465
18 7 12121248
13 6 28252098
14 12 2481192
4 16 54868108
13 15 33001477
7 13 15911113
8 16 47075458
7 14 51352052
9 2 41100503
18 10 ...

output:

56136429870080898
708662873172590
27362600562021341
1155246351533540
3654157348090760
17815291227097666
30213003443498889
6338283726464797
7488308941401683
16163725942123204
1179579860132860
23921408316672
488836795657545
35957867675947221
39310649775652678
36827092041920753
6279125913051820
2222663...

result:

wrong answer 1st numbers differ - expected: '56264701460108257', found: '56136429870080898'

Test #11:

score: 0
Wrong Answer
time: 344ms
memory: 86188kb

input:

18 306
54786856 23623482 37443275 34976477 27052191 21997277 93803298 62986079 72289998 36640646 66962609 75940630 20835955 36012773 32492294 69398349 49378951 13097897
7 10 5470000
8 7 53513890
3 15 38460382
7 16 19142503
5 14 45517218
18 17 42648313
8 18 48305235
4 16 41424027
5 12 52928903
5 4 44...

output:

16057312539046078
42290239398382952
39135459927116
28567890510813006
16037339864902252
26305399702993590
474417415385024
15531683963889498
1213046401588215
89806933394220
3230204878290474
34732049504794155
1530534142873815
4573242731141175
17754025499591660
39428626219037784
3365374079638133
1358925...

result:

wrong answer 1st numbers differ - expected: '16448924998323876', found: '16057312539046078'

Test #12:

score: 0
Wrong Answer
time: 372ms
memory: 86416kb

input:

18 303
87437585 22204459 77335222 63373455 24384957 40111770 61538701 65736765 65450807 20008686 60461910 77184085 62951808 75441264 35010255 67513271 41855413 84760939
6 14 45984925
3 6 5610402
8 1 49203830
8 3 53792394
10 8 11629718
1 12 20708032
4 6 14035635
15 18 487975772
3 1 28292662
3 10 2399...

output:

919854144314574
34656971840025530
9409531355422664
669207273505472435
4927307865905202
5597343932222926
5768073744452589
5205887571721572
9107063972299996
929571390607270268
5995514391999405
8054730269141620
6804942994711757
32590358497474266
221430127060560
4875586060869979
42810450016869911
322002...

result:

wrong answer 1st numbers differ - expected: '1107904896715516', found: '919854144314574'

Test #13:

score: 0
Wrong Answer
time: 381ms
memory: 87208kb

input:

18 300
95399651 98514702 95906995 99120696 97373712 99841892 95487998 98629037 97207398 99163728 97816361 94919203 95202846 96133518 98849047 99498436 94447669 96164861
10 8 54922237
1 2 55368382
10 4 54029624
9 8 55267410
14 2 53427574
14 18 54579322
3 9 54230956
2 9 52630731
4 16 53837522
3 7 8372...

output:

109528835545633108
82742272974985094
544229469224592153
298209600731040204
102201077274438799
383015478740918408
299286694174769923
147546460575830649
540354084270729841
6754391924660341
621910480034117102
107925892583226321
5411802037569113
227454199600088308
541689612096260159
260514982645316086
3...

result:

wrong answer 1st numbers differ - expected: '109547258785001075', found: '109528835545633108'

Test #14:

score: 0
Wrong Answer
time: 348ms
memory: 86908kb

input:

18 306
94983318 99500146 99056770 99199070 96785433 94689368 96603811 97464542 96757856 95575432 97758260 96271537 94822391 98897205 96531324 95046283 95759027 99689250
14 18 54518764
3 8 54402270
16 8 52601874
3 11 52679529
13 6 54902169
1 10 54363631
4 2 55268135
5 6 52963284
16 1 52494958
12 11 5...

output:

233109679928341269
148543112590676973
131310080406050799
21519531030733103
184605723783793210
86240102428688866
174852838438131756
237701277031677127
107314246858577973
21022462643297569
469347478123342184
16670250600078085
484265681494045065
364450558389973295
9122131674929332
313363820145939805
70...

result:

wrong answer 1st numbers differ - expected: '233314656911878890', found: '233109679928341269'

Test #15:

score: 0
Time Limit Exceeded

input:

16 240
47666600 44327219 49953274 41785108 32073587 24424080 30939819 78762914 90224099 59998405 64133109 48652631 22221281 96356764 38490560 116991
1 2 91993819
1 3 97619874
1 4 89451708
1 5 79740187
1 6 94041352
1 7 78606419
1 8 126429514
1 9 137890699
1 10 107665005
1 11 111799709
1 12 96319231
1...

output:

212540929497153000
67107116385111426
160830745949979663
58791727813832608
95764761271748279
175339139652863002
239297214240271800
264345302513412638
25916559560778064
108527092089074230
229728402202110570
171112061109054276
127390525466717280
102215300925877906
110949777479288000
8928107215433348
19...

result:


Test #16:

score: 0
Wrong Answer
time: 184ms
memory: 24676kb

input:

16 240
42361838 31647618 32114308 8782634 17345648 68132951 88405030 26942819 62741100 66985295 20876520 8437021 27114112 66925976 7183979 94977427
2 15 58174648
8 15 34276605
6 10 58212397
2 13 58804593
13 9 54225029
15 14 33719184
11 13 61087050
9 10 28955627
6 2 10289499
10 2 20518981
13 8 837959...

output:

493210283393155328
16266628758649267
1273621877254353
1839567156666392
1425035265632595
5670560113574638
7053982815161311
837454078239266
82486864805392
5218516831364771
9672803397499597
14763790732892684
5252313629194265
173253576572124
15999075350729798
16012976290176350
13665986369857489
13398233...

result:

wrong answer 2nd numbers differ - expected: '16457452249109400', found: '16266628758649267'

Test #17:

score: 0
Wrong Answer
time: 226ms
memory: 26424kb

input:

16 240
94916675 95328982 94461789 98179130 96410042 95984504 99026406 96722757 98043813 97126519 99521857 99735210 99833885 94048501 93989630 97045699
5 6 61339353
7 11 61447467
16 7 59391553
15 5 61958471
13 2 59603541
13 16 60250166
2 3 61615858
16 3 60312774
14 6 61619256
9 2 61767236
7 12 608785...

output:

690101190008603503
73068460834360901
80819691326745741
35568928399574258
83210013036776286
135104537707913810
13749644494926855
256508663036770958
425301267931667908
6382001607556932
460753370083214245
207007460443121149
369310602052226974
607989144184449270
88469140617443424
675401823119133989
8172...

result:

wrong answer 2nd numbers differ - expected: '74352044407892892', found: '73068460834360901'

Test #18:

score: 0
Wrong Answer
time: 362ms
memory: 46312kb

input:

17 269
10989016 28905152 56011456 36383994 32588074 40160206 81943847 29653018 81874689 11531228 28812650 79088847 31042740 89163087 58731031 57356809 5076315
2 4 54972232
1 17 48426734
17 8 7126979
7 2 16376090
10 7 30672058
8 17 55225752
2 6 312152706
4 12 1609956
11 10 44726737
7 6 16333848
17 9 ...

output:

5332537500389503
135822169409050
5085963480728047
221000015099743
7089743943754142
2259776434152421
2143686456402309
1847463779110529
7554322607974784
56134633472252418
4616925473954458
18958571682221224
33763284280958270
54808409846460
65065689951230
55986200355020672
319921138404424
2850473436688
...

result:

wrong answer 1st numbers differ - expected: '5581509823816012', found: '5332537500389503'

Test #19:

score: 0
Wrong Answer
time: 2701ms
memory: 48848kb

input:

17 241
20878633 21727433 30788417 1919362 24415556 26527489 14285320 3437901 23517959 28616698 11361867 15220890 21496568 20470194 31073215 5981317 11566475
1 2 42606066
1 3 98682648
1 4 22797995
1 5 45294189
1 6 47406122
1 7 35163953
1 8 24316534
1 9 44396592
1 10 49495331
1 11 32240500
1 12 360995...

output:

108874984881706836
39998804782948735
7253589755190765
47159747035437894
128215794738320312
4126981818415894
17898559608714996
133380710676095343
75179044796377144
131645427536605922
104948693701281264
706440289641834
154697776830457968
6817984851784806
103373859593846186
44351325877615764
1844453686...

result:

wrong answer 9th numbers differ - expected: '75180048547321641', found: '75179044796377144'

Test #20:

score: 0
Wrong Answer
time: 2935ms
memory: 49556kb

input:

17 241
26896510 11416857 23632920 22663714 10426416 1449988 6534437 21431904 6332558 5350871 7478640 7144884 1667707 31989074 24328111 14606283 16379885
1 2 38313367
1 3 50529430
1 4 89019020
1 5 37322926
1 6 28346498
1 7 33430947
1 8 48328414
1 9 33229068
1 10 32247381
1 11 48235649
1 12 34041394
1...

output:

32778896785043400
44988444335627296
78532755901649921
69880405813821389
100757975694356954
32737036781220946
10044396653445154
20540412974913930
47761393742370
72716173770109619
176042587180466333
130113285701048912
107065318334030444
103104460019043248
173458077436724618
2650643313873852
1150030928...

result:

wrong answer 1st numbers differ - expected: '32779028068219037', found: '32778896785043400'

Test #21:

score: 0
Time Limit Exceeded

input:

18 273
5856998 26869251 1761061 23339731 6696975 12073312 26103914 9146585 14284107 2290011 33149581 6690606 1938529 2611081 4180578 15507572 12766646 8196720
1 2 32726249
1 3 7618059
1 4 29196729
1 5 12553973
1 6 17930310
1 7 31960912
1 8 15003583
1 9 20141105
1 10 8147009
1 12 12547604
1 13 779552...

output:

59668433821480730
11829620092917720
94313798310579388
39465910492746707
3287054248487086
93985077914518126
361398308583375
42294969707419663
145833098207262986
169278502787400280
141749264332210056
8905421058615476
166285047110364266
30697972443940536
92813594329636480
13349308698897930
481211077143...

result:


Test #22:

score: 0
Time Limit Exceeded

input:

18 273
18655021 10530209 4072104 27397860 1799797 31844906 10224838 22363503 8387103 25160565 867464 18587455 28492008 3583506 7250222 12947265 13542506 15353338
1 2 29185230
1 3 22727125
1 4 46052881
1 5 20454818
1 6 50499927
1 8 41018524
1 9 44747129
1 10 43815586
1 11 28438355
1 12 37242476
1 13 ...

output:

191914217942017249
177821186291840089
159567710118372739
63381203626002639
2732703036051690
178142648642986339
6690085357980800
50836174460681764
146778571533991969
105760621215912
14888573155075312
5461385712679200
40061919789345776
12018441115504480
56011781935428156
15564070638837750
137818331953...

result:


Test #23:

score: 0
Time Limit Exceeded

input:

18 273
18425031 23650394 24880771 20922906 26575943 17784399 1257646 4304768 2028569 32225860 3162758 23575563 21688821 6218252 30502483 720206 33244851 27314277
1 2 43683269
1 3 61643789
1 4 75113213
1 5 58792271
1 6 52052510
1 7 28904939
1 8 22817172
1 9 26122275
1 11 24226530
1 12 77523542
1 13 6...

output:

1138546366805558
62667767037191400
38630509168723288
27245035344721568
98455430479451256
113095555313189897
25219794582211292
201786421030430027
541758543668230
114901795935593639
206619347600715407
197117228100400439
3643777059367880
8397092992289406
3553880571700093
88912148370614545
1788232051772...

result:


Test #24:

score: 0
Time Limit Exceeded

input:

18 273
26613501 27441209 12794702 13658897 32546072 2607103 21792275 12508707 8092259 2836952 26658654 15275240 16574454 31623641 1150608 21764569 30050392 12599166
1 2 54054710
1 3 39408203
1 4 40272398
1 5 59159573
1 6 29220604
1 7 48405776
1 9 34705760
1 10 29450453
1 11 53272155
1 12 41888741
1 ...

output:

2709709040134800
48604172519557884
530119685004549
2587201659147584
1254529320744648
195656962515960415
8732146742783067
95918983633445944
83048757892713151
180808046186578708
162632332510855528
106925249733973735
218492366742382045
34505908422228718
86920875711824804
59859714929276776
3124459481036...

result: