QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#403963#437. Fun Tourbachbeo200747 92ms18396kbC++231.9kb2024-05-02 23:57:162024-05-02 23:57:17

Judging History

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

  • [2024-05-02 23:57:17]
  • 评测
  • 测评结果:47
  • 用时:92ms
  • 内存:18396kb
  • [2024-05-02 23:57:16]
  • 提交

answer

#include "fun.h"
#include <bits/stdc++.h>
using namespace std;

std::vector<int> createFunTour(int N, int Q) {
    vector<int> P(N);
    int X=0,Min=N;
    for(int i=0;i<N;i++){
        int sz=attractionsBehind(0,i);
        if(sz>N/2 && sz<Min) X=i,Min=sz;
    }
    vector<int> D(N),cc;
    for(int i=0;i<N;i++){
        D[i]=hoursRequired(X,i);
        if(D[i]==1) cc.push_back(i);
    }
    int S=(int)cc.size();
    vector<vector<int>> G(S);
    for(int i=0;i<N;i++){
        if(i==X) continue;
        int j=0;
        while(j+1<S && hoursRequired(cc[j],i)+D[cc[j]]!=D[i]) j++;
        G[j].push_back(i);
    }
    for(int i=0;i<S;i++){
        sort(G[i].begin(),G[i].end(),[&](int x,int y){
            return D[x]>D[y];
        });
    }
    P[0]=X;
    int T=1,c=-1;
    while(T<N){
        int Max=0;
        for(int i=0;i<S;i++) Max=max(Max,(int)G[i].size());
        if(2*Max==N-T) break;
        else if(2*Max>N-T){
            for(int i=0;i<S;i++) if((int)G[i].size()==Max){
                P[T++]=G[i].back();
                G[i].pop_back();c=i;
                break;
            }
            continue;
        }
        int u=-1;Min=N;
        for(int i=0;i<S;i++){
            if(c==i) continue;
            if(D[G[i].back()]<Min) Min=D[G[i].back()],u=i;
        }
        P[T++]=G[u].back();
        G[u].pop_back();c=u;
    }
    int u=-1;
    for(int i=0;i<S;i++) if(2*(int)G[i].size()==N-T) u=i;
    vector<int> A,B;
    for(int i=0;i<S;i++){
        if(u==i) A=G[i];
        else B.insert(B.end(),G[i].begin(),G[i].end());
    }
    if(c!=u) swap(A,B);
    sort(A.begin(),A.end(),[&](int x,int y){
        return D[x]>D[y];
    });
    sort(B.begin(),B.end(),[&](int x,int y){
        return D[x]>D[y];
    });
    while(!A.empty()){
        P[T++]=B.back();
        P[T++]=A.back();
        B.pop_back();
        A.pop_back();
    }
    reverse(P.begin(),P.end());
    return P;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Accepted

Test #1:

score: 0
Accepted
time: 1ms
memory: 3744kb

input:

2 400000
1 0

output:

1 0

result:

ok correct

Subtask #2:

score: 0
Accepted

Test #3:

score: 0
Accepted
time: 0ms
memory: 3704kb

input:

4 400000
1 0
2 0
3 1

output:

3 2 1 0

result:

ok correct

Subtask #3:

score: 0
Accepted

Test #9:

score: 0
Accepted
time: 1ms
memory: 3684kb

input:

4 400000
1 0
2 1
3 2

output:

3 0 2 1

result:

ok correct

Subtask #4:

score: 0
Accepted

Test #13:

score: 0
Accepted
time: 1ms
memory: 4016kb

input:

4 400000
0 1
0 2
0 3

output:

2 3 1 0

result:

ok correct

Subtask #5:

score: 0
Accepted

Test #20:

score: 0
Accepted
time: 1ms
memory: 3820kb

input:

18 400000
1 0
2 0
3 1
4 1
5 2
6 2
7 3
8 3
9 4
10 4
11 5
12 5
13 6
14 6
15 7
16 7
17 8

output:

15 11 16 12 17 13 7 14 8 5 9 6 10 2 4 3 0 1

result:

ok correct

Subtask #6:

score: 0
Accepted

Test #27:

score: 0
Accepted
time: 1ms
memory: 3996kb

input:

18 400000
7 6
8 7
5 8
4 5
3 4
9 3
10 11
12 10
13 12
14 13
9 14
2 9
15 2
16 15
17 16
1 17
0 1

output:

0 6 11 7 1 10 8 17 12 5 16 13 4 15 14 3 2 9

result:

ok correct

Subtask #7:

score: 0
Accepted

Test #33:

score: 0
Accepted
time: 1ms
memory: 3800kb

input:

500 400000
33 414
398 33
254 398
400 254
376 400
302 376
466 302
362 466
301 362
267 301
417 267
413 417
14 413
305 14
353 305
83 353
227 83
57 227
446 57
406 446
154 406
336 154
195 336
405 195
264 405
76 264
203 76
459 203
178 459
72 178
296 72
488 296
404 488
60 404
156 60
393 156
108 393
216 108...

output:

414 212 33 88 398 124 254 399 400 190 376 10 302 366 466 234 362 432 301 28 267 188 417 237 413 64 14 268 305 39 353 349 83 345 227 125 57 70 446 276 406 420 154 369 336 48 195 211 405 482 264 8 76 22 203 487 459 9 178 230 72 339 296 95 488 340 404 50 60 102 156 174 393 47 108 461 216 424 106 181 31...

result:

ok correct

Subtask #8:

score: 0
Accepted

Test #41:

score: 0
Accepted
time: 1ms
memory: 3728kb

input:

501 400000
1 0
2 0
3 1
4 1
5 2
6 2
7 3
8 3
9 4
10 4
11 5
12 5
13 6
14 6
15 7
16 7
17 8
18 8
19 9
20 9
21 10
22 10
23 11
24 11
25 12
26 12
27 13
28 13
29 14
30 14
31 15
32 15
33 16
34 16
35 17
36 17
37 18
38 18
39 19
40 19
41 20
42 20
43 21
44 21
45 22
46 22
47 23
48 23
49 24
50 24
51 25
52 25
53 26
...

output:

327 485 351 499 334 498 333 497 332 496 331 495 330 494 329 493 328 492 336 491 326 490 325 489 324 488 323 487 322 443 321 470 320 484 367 483 337 482 338 481 339 480 340 479 341 478 342 477 343 476 344 475 345 474 346 473 347 472 348 486 349 458 350 427 335 457 319 459 352 460 353 461 354 462 355 ...

result:

ok correct

Subtask #9:

score: 0
Wrong Answer

Test #51:

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

input:

1000 400000
6 5
7 8
6 7
9 6
11 10
11 12
13 11
14 15
13 14
9 13
16 9
18 17
18 19
20 18
22 21
22 23
20 22
24 20
26 25
26 27
28 26
30 29
30 31
28 30
24 28
16 24
32 16
33 32
35 34
35 36
37 35
39 38
39 40
37 39
41 37
43 42
43 44
45 43
47 46
47 48
45 47
41 45
49 41
50 51
52 50
54 53
54 55
52 54
56 52
58 5...

output:

WA: Tour is not fun

result:

wrong output format Expected integer, but "WA:" found

Subtask #10:

score: 0
Accepted

Test #59:

score: 0
Accepted
time: 92ms
memory: 18396kb

input:

99999 400000
11681 58292
11681 63929
49752 11681
30596 74400
30596 39261
49752 30596
19390 49752
89694 31923
19390 89694
54297 19390
42389 12902
42389 60328
72803 42389
69881 43761
69881 95741
72803 69881
96271 72803
63872 20658
63872 93588
35833 63872
48418 44153
35833 48418
96271 35833
54297 96271...

output:

15273 7582 15257 17774 11738 17775 89429 17776 15261 7648 89425 7658 15266 94473 15267 17879 89424 7590 89421 7584 15270 17887 89419 94468 15251 97611 15258 7581 3649 7577 15194 7575 89442 17826 89441 7571 15201 17900 15202 7565 15205 97635 15207 17909 89440 17915 15210 7561 8136 7673 94255 17811 81...

result:

ok correct

Subtask #11:

score: 10
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Dependency #4:

100%
Accepted

Subtask #12:

score: 16
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Dependency #4:

100%
Accepted

Dependency #5:

100%
Accepted

Dependency #6:

100%
Accepted

Dependency #7:

100%
Accepted

Subtask #13:

score: 21
Accepted

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #5:

100%
Accepted

Dependency #8:

100%
Accepted

Subtask #14:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #3:

100%
Accepted

Dependency #6:

100%
Accepted

Dependency #9:

0%

Subtask #15:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

100%
Accepted

Dependency #4:

100%
Accepted

Dependency #5:

100%
Accepted

Dependency #6:

100%
Accepted

Dependency #7:

100%
Accepted

Dependency #8:

100%
Accepted

Dependency #9:

0%