QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#147438#6760. 合并书本HaccerKat#0 28ms3784kbC++203.3kb2023-08-23 09:24:512023-08-25 01:30:58

Judging History

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

  • [2023-08-25 01:30:58]
  • 评测
  • 测评结果:0
  • 用时:28ms
  • 内存:3784kb
  • [2023-08-23 09:24:51]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<pair<vector<int>, vector<int>>> bs;
typedef vector<pair<vector<int>, ll>> bs2;
typedef unsigned int ui;
typedef unsigned long long ull;
typedef pair<int, int> pi;
typedef pair<ll, ll> pll;
// using u128 = __uint128_t;
// using i128 = __int128;
const int mod = 1000000007;
const int N = 105;
const int LOG = 20;
const ll inf = 1e18;
const int inf2 = 1e9;
const double eps = 1e-11;
void print(int x) {
    cout << x;
}

template <class T>
void printa(vector<T> a) {
    int n = a.size();
    cout << "[";
    for (int i = 0; i < n; i++) {
        print(a[i]);
        cout << (i < n - 1 ? ", " : "");
    }
    
    cout << "]\n";
}

int w[N];
vector<bs> plans;
ll out = inf;
int cnt = 0;
map<bs2, ll> mp;
void dfs(bs2 a, bs plan, ll c) {
    if (c > inf) return;
    int n = a.size();
    sort(a.begin(), a.end());
    if (mp.contains(a) && mp[a] <= c) return;
    mp[a] = c, cnt++;
    if (n == 1) {
        if (c < out) plans.clear();
        if (c <= out) {
            out = c;
            plans.push_back(plan);
        }
        
    }
    
    int s = inf2, ss = inf2;
    for (int i = 0; i < n; i++) {
        int sz = a[i].first.size();
        if (sz < s) s = sz;
        else if (sz < ss) ss = sz;    
    }
    
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (i == j) continue;
            int sz1 = a[i].first.size(), sz2 = a[j].first.size();
            if ((s == sz1 && ss == sz2) || (s == sz2 && ss == sz1)) {
                bs2 b;
                bs planb = plan;
                ll cb = c, wb = 0;
                vector<int> v;
                for (int k = 0; k < n; k++) {
                    if (i != k && j != k) {
                        b.push_back(a[k]);
                    }
                    
                    if (i == k || j == k) {
                        for (int x : a[k].first) {
                            v.push_back(x);
                            if (i == k) cb += w[x];
                        }
                        
                        cb += a[k].second, wb = max(wb, a[k].second);
                    }
                }
                
                sort(v.begin(), v.end());
                b.push_back({v, wb * 2 + 1});
                planb.push_back({a[i].first, a[j].first});
                dfs(b, planb, cb);
            }
        }
    }
}

int n, m, k, qq;
void solve() {
    cnt = 0, out = inf;
    plans.clear();
    mp.clear();
    cin >> n;
    bs2 a(n);
    for (int i = 1; i <= n; i++) {
        cin >> w[i];
        a[i - 1].first.push_back(i), a[i - 1].second = 0;
    }
    
    bs plan;
    dfs(a, plan, 0);
    cout << out << "\n";
    // cout << "------------------------------\n";
    // cout << cnt << " " << "\n";
    // for (bs v : plans) {
    //     for (auto p : v) {
    //         auto [vi, vj] = p;
    //         printa(vi);
    //         printa(vj);
    //         cout << "****\n";
    //     }
        
    //     cout << "------****------\n";
    // }
    
    // cout << "------------------------------\n";
}

int32_t main() {
    std::ios::sync_with_stdio(false);
    cin.tie(NULL);
    int tt;
    cin >> tt;
    while (tt--) {
        solve();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 10ms
memory: 3684kb

input:

10
7
1123 49789157 413323654 2706564 2927094 150 118615
7
3 129759848 804638078 3 13679143 570776857 654029932
1
1
6
1 1 1 2 2 2
3
999999810 999999043 999999202
7
1 2 3 49763 3691 3569835 2925
4
327658691 806170222 346679860 346383249
1
1
4
1 1 1 2
6
1 1 1 1 1 1

output:

55662600
1381924944
0
15
1999998854
56400
1348380493
0
6
13

result:

wrong answer 1st numbers differ - expected: '55542760', found: '55662600'

Test #2:

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

input:

10
7
213 268 63 7 967 7 22052029
7
1 265923976 472789929 1 1 470475169 343368258
7
1 19 372 7196 138949 2682695 51794746
7
1 1 1 2 2 2 4
7
999999794 999999919 999999066 999999842 999999196 999999936 999999842
7
10867 146096 93 1 1 280230 29430
7
162066046 918510621 451526315 118693343 70646597 22247...

output:

1611
1079767418
2829633
21
8999995724
186592
1888192926
91
22
18

result:

wrong answer 1st numbers differ - expected: '1552', found: '1611'

Test #3:

score: 0
Time Limit Exceeded

input:

10
11
241989 3 881273 3451 4 139032 5 6543 2812483 1546680 9
11
3 573103223 275326913 106433034 871434747 631247004 690166797 3 212836284 570933697 259491409
11
1 6 43 284 1873 12328 81113 533669 3511191 23101297 151991108
11
1 1 1 2 2 2 4 4 4 8 8
11
999999796 999999778 999999561 999999989 999999731...

output:


result:


Test #4:

score: 0
Time Limit Exceeded

input:

10
13
836 412717524 401028726 26811 13866 887 355 27 51742476 849 145 23497644 245739
13
1 340278685 667310626 777981413 644221578 797415065 415910260 791888781 57470166 430855032 305196231 39774837 177199623
13
1 4 24 119 587 2894 14251 70170 345510 1701254 8376776 41246263 203091762
13
1 1 1 2 2 2...

output:


result:


Test #5:

score: 0
Time Limit Exceeded

input:

10
22
776 24 978555 130 69929 308 82236 107902 133781 85 1005152 352998 30828907 11052 97523363 916153873 436 936615 23 400 55 174
16
3 423761758 899451343 376607666 3 139145680 906709010 802975514 664857002 780444615 777185992 744647598 405531571 3 765617301 38995584
15
1 3 15 63 251 999 3981 15848...

output:


result:


Test #6:

score: 0
Time Limit Exceeded

input:

10
22
1055 431267 4116 50 77816 676985197 179 7 233469 319 3 402101 775746370 1273815 37106291 67770 159 142577182 85244425 2521002 23 187
18
1 645691791 448180634 63038102 602497356 717242329 1 688453392 234138571 1 272075583 146167832 560503312 277845554 105055101 30775956 903105974 212483311
18
1...

output:


result:


Test #7:

score: 0
Time Limit Exceeded

input:

10
28
37971032 354908055 461677774 844292 1 298294554 26 6723520 444122859 134313571 65562 2 20 619194 919547 198 364523 339 19 1084924 170223 399183 1 19625846 389429 30 32692572 5265886
25
3 248045587 963407548 323796573 42641957 500892988 662629593 15629907 588720039 282703914 344522615 369907884...

output:


result:


Test #8:

score: 0
Time Limit Exceeded

input:

10
28
428655 2332 3366 12542 7148 113 818539 4 18 473825 157286 91836 170801385 124 342109 17959 257905 127 5703 884 471111 430 1 211 42656 3 326273 4355
27
1 85526477 762041910 39158143 799122900 243430975 497801265 553830240 243795921 156062773 671204985 690564761 384519093 15454567 794964818 2307...

output:


result:


Test #9:

score: 0
Time Limit Exceeded

input:

10
47
20768082 25 32345092 1747363 397249281 28 3075 11609 3 6 45429517 4427 16041 1 65026496 150911 3875 2662 23270 46208197 21 4137 12 5027312 48775344 28 36 7788097 145556840 406 104 7572 811256189 354 145526632 101998772 4247314 10160 1973 40 1 11894 1753 8 40042507 86100 717633542
32
3 38159934...

output:


result:


Test #10:

score: 0
Time Limit Exceeded

input:

10
48
250209506 67327 1594742 12 44195 4 1255759 353945 106 68706412 24140006 7971 8041441 500777589 434 332883887 255442 4052 3695190 122270082 6123937 201957 1423 108081 244 422 2760852 42154 177 74 8 4 208457 66 51446 505 203 22 835 1582706 145 5103 17265 7341 14 221644600 4729 934
6
1 614810765 ...

output:


result:


Test #11:

score: 0
Time Limit Exceeded

input:

10
50
147603372 275 2 28042 21553581 289155959 150 2219693 28 8 236 17 171291 17 16136 36017490 270548 2265939 3 4788491 483162984 319890 4509445 791 96599 237 166266592 92401768 613664454 10455478 338525 19741 5305658 2245604 727719496 5955 9 1908 4839 16225 13744 28992258 273 244549 10686 47617 85...

output:


result:


Test #12:

score: 0
Time Limit Exceeded

input:

10
50
21476 56307367 6089 187662 1 25407 8447 921225369 268 154412972 2292968 840 219410540 52760816 12118 723314265 7309 6727197 1444 2078045 539 16 87 4981106 36 669602 823 7475396 3353 5238167 1521 283 405 494423322 350990102 4475136 3 28383582 172898666 626 222 2648 1 29 286387137 1578 25379 167...

output:


result:


Test #13:

score: 0
Time Limit Exceeded

input:

10
50
226 47701 572547730 245 285 29862003 466 1397985 20241 5020651 124 8372876 232036 2913 63756236 5 8173200 319484731 30 1561 78332699 65778 254056 15 24945 821826 4790 4 5570 495 16150 74131646 168605322 902321 15477509 7584151 27123 32672 1956828 2121755 1737 9 27097 21 25115 119587330 1563311...

output:


result:


Test #14:

score: 0
Time Limit Exceeded

input:

10
60
3486066 91 370245 96 47 2 3735 1045256 300190 60121949 337721 26754300 2511771 2 27584943 3968960 125 6572 83282301 430 79556638 3139814 29 82402 79499189 2181225 24974 197505 48 71584886 220747 8 482 23019442 282 43703 1353746 54 13 13795352 47783755 619 341228816 36630535 4 1930 2953652 7381...

output:


result:


Test #15:

score: 0
Time Limit Exceeded

input:

10
70
2937 8 9363276 39944045 71289789 245232 13788 192772 151 4846346 59569185 5 52600 61838 21939 825147 98 14769 126399 966474 58545 66558 27 36263453 50 90426783 6010741 95 397008995 1 155488 2820748 1820399 6544165 35414 576 10 441889 227994 42892479 7 7 157 49526 1431339 270 609857813 12021658...

output:


result:


Test #16:

score: 0
Time Limit Exceeded

input:

10
80
287909659 15 2906 813 9572 23265 369492293 69437663 36865 75236 6 1042 6 29 35 4943 29 2708913 733 190725903 12 17361 11 2 7502649 790785 201132446 18 206727894 7 18387169 263 4095376 47231 12 143 31704 10236 1392706 1659 63 4386955 272613 8368244 392808 6409410 3157598 7624 9 19 1091705 25385...

output:


result:


Test #17:

score: 0
Time Limit Exceeded

input:

10
99
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
63
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:


result:


Test #18:

score: 0
Time Limit Exceeded

input:

10
100
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
95
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

output:


result:


Test #19:

score: 0
Time Limit Exceeded

input:

10
99
20960812 219576969 12706 3531080 5 13347 4257 770876154 6720 7 15070300 95492959 114149 4271305 1001 84 9938 259098 5 3201 343162411 29534 25376 30083 53 605922 1 350508840 18741 22 2866 7964760 40008972 10 11744 27196 408 1415 3555868 3449928 101007 3018610 26793 356 183775 12 95159 682246113...

output:


result:


Test #20:

score: 0
Time Limit Exceeded

input:

10
100
1049 78473423 637 136611 5569464 1622 3 1 9822897 8 4856 11 237784166 111931094 42308394 389667 8607 44 29 23 16788859 51 726 19 1 441286 336488761 1752 603 2 27832 4 2416121 19279999 420496571 24116733 917152413 1704799 329 48140124 10230 8 1137 18 17 190254279 203508 2 126058833 806948059 5...

output:


result: