QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#294719#4829. Mark on a Graphucup-team055#0 1074ms4012kbC++232.3kb2023-12-30 16:08:132023-12-30 16:08:13

Judging History

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

  • [2023-12-30 16:08:13]
  • 评测
  • 测评结果:0
  • 用时:1074ms
  • 内存:4012kb
  • [2023-12-30 16:08:13]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll INF = LLONG_MAX / 4;
#define rep(i, a, b) for(ll i = a; i < b; i++)
#define all(a) begin(a), end(a)
template<class T> bool chmin(T& a, T b) { if(a <= b) return 0; a = b; return 1; }
template<class T> bool chmax(T& a, T b) { if(a >= b) return 0; a = b; return 1; }


mt19937 rnd;
int main() {
//    cin.tie(0)->sync_with_stdio(0);
    
    ll N, M;
    cin >> N >> M;
    
    vector g(N, vector<ll>{});
    rep(i, 0, M) {
        ll A, B;
        cin >> A >> B;
        A--; B--;
        g[A].push_back(B);
        g[B].push_back(A);
    }
    
    vector<ll> deg(N);
    rep(i, 0, N) deg[i] = g[i].size();
    ranges::sort(deg);
    deg.resize(10);
    
    rep(i, 0, 10) cerr << deg[i] << " \n"[i == 9];
    
    ll ans = 4500;
    rep(_, 0, 30000) {
        vector<ll> d(N);
        rep(m, 0, M * 2) d[rnd() % N]++;
        
        vector<ll> cnt(M * 2 + 1);
        for(ll x : d) cnt[x]++;
        
        vector<ll> A, B;
        [&]{
            rep(i, 0, M * 2 + 1) rep(_, 0, cnt[i]) {
                A.push_back(i);
                if(A.size() == 10) return;
            }
        }();
        
        if(deg <= A) {
            ans++;
            continue;
        }
        
        [&]{
            ll c = 10;
            rep(i, 0, M * 2 + 1) rep(_, 0, cnt[i]) {
                if(c) {
                    c--;
                    cnt[i + 1]++;
                }
                else {
                    B.push_back(i);
                    if(B.size() == 10) return;
                }
            }
        }();
        
        if(B <= deg) ans--;
    }
    
    cerr << ans << endl;
    
    if(ans < 0) {
        puts("ok");
        return 0;
    }
    
    puts("mark");
    puts("5");
    vector<ll> idx(N);
    rep(i, 0, N) idx[i] = i;
    
    auto add_edge = [&](ll i, ll j) -> bool {
        if(i == j) return 0;
        if(ranges::count(g[i], j)) return 0;
        g[i].push_back(j);
        g[j].push_back(i);
        
        cout << i + 1 << ' ' << j + 1 << endl;
        return 1;
    };
    
    rep(_, 0, 5) {
        ranges::shuffle(idx, rnd);
        ranges::sort(idx, less<>{}, [&](ll i) { return g[i].size(); });
        rep(j, 1, N) if(add_edge(idx[0], idx[j])) break;
    }
}

詳細信息

Test #1:

score: 100
Accepted
time: 724ms
memory: 4012kb

input:

1000 3560
603 151
415 20
102 569
895 552
678 734
24 614
689 518
440 223
751 919
223 433
711 551
502 634
706 583
812 501
514 535
780 751
720 530
532 384
888 139
864 791
292 675
171 881
30 592
464 557
280 299
654 650
894 335
250 532
792 10
83 969
118 771
579 300
852 983
243 940
957 939
817 889
911 319...

output:

mark
5
880 655
862 691
762 501
880 214
463 73

input:

1000 3565
626 777
295 222
665 338
534 338
682 101
50 833
155 950
656 841
184 95
383 221
450 259
815 771
335 355
759 167
402 763
582 250
950 401
224 873
974 302
521 246
368 12
676 977
920 351
643 831
511 688
553 125
506 102
70 757
464 840
87 733
355 37
600 53
178 201
182 394
201 34
951 583
557 937
25...

output:

ok

result:

ok all right

Test #2:

score: 100
Accepted
time: 405ms
memory: 3700kb

input:

1000 2000
457 335
160 497
464 992
892 255
853 3
308 301
970 363
541 299
89 418
425 128
626 827
603 854
484 874
755 295
607 483
798 552
356 850
320 357
254 940
675 901
168 525
301 636
520 555
773 910
343 701
889 966
218 529
909 950
71 64
682 284
424 138
721 792
670 544
386 72
654 909
725 235
592 437
...

output:

mark
5
250 279
345 585
508 224
633 861
623 613

input:

1000 2005
610 181
320 426
386 831
377 551
97 233
106 231
643 993
440 112
246 835
141 940
505 764
220 6
935 217
728 734
562 570
651 962
699 108
731 324
591 632
764 431
683 435
634 379
415 582
904 500
999 663
70 498
978 234
532 563
608 99
457 547
528 479
411 674
235 758
569 980
414 78
164 502
633 94
3...

output:

ok

result:

ok all right

Test #3:

score: 100
Accepted
time: 1002ms
memory: 3996kb

input:

1000 5000
449 632
597 26
701 322
249 190
411 770
666 596
989 995
112 861
445 818
544 659
24 680
739 593
344 439
193 932
600 526
574 869
216 918
716 793
259 686
555 993
255 578
659 271
328 524
729 672
39 771
241 866
27 790
417 109
56 403
338 299
387 232
280 306
589 794
833 419
900 802
54 697
539 807
...

output:

mark
5
231 673
98 231
514 98
8 673
563 143

input:

1000 5005
551 153
334 992
476 219
208 346
392 91
581 127
150 361
435 592
24 378
341 805
699 578
106 119
985 570
128 182
917 352
647 685
128 752
345 596
992 354
13 247
309 736
890 582
471 552
846 461
326 688
305 830
923 926
138 888
321 569
405 143
207 306
5 115
344 235
781 688
325 544
129 462
530 649...

output:

ok

result:

ok all right

Test #4:

score: 100
Accepted
time: 641ms
memory: 3708kb

input:

1000 3156
347 398
792 278
754 442
413 757
391 130
636 625
207 437
81 415
47 974
887 779
524 619
379 894
868 594
653 919
29 117
123 867
632 505
648 147
130 420
495 876
637 659
882 348
462 878
282 646
398 525
419 224
926 448
305 934
855 570
396 345
774 918
336 123
502 491
984 783
845 142
790 594
754 4...

output:

mark
5
964 518
639 564
747 52
271 737
256 823

input:

1000 3161
759 496
499 167
403 77
342 814
900 154
990 212
612 359
712 549
715 777
539 530
441 28
468 773
111 685
856 82
986 660
609 811
7 738
668 533
481 64
925 392
529 865
415 272
853 843
954 311
697 336
703 45
453 249
295 871
861 501
617 957
974 636
879 919
924 421
127 255
923 765
125 517
881 664
5...

output:

ok

result:

ok all right

Test #5:

score: 100
Accepted
time: 691ms
memory: 4004kb

input:

1000 3433
634 21
789 966
541 959
213 381
366 781
107 649
747 122
336 869
222 648
833 972
929 524
712 524
744 525
568 679
634 163
901 501
56 518
128 587
720 117
208 439
860 85
852 168
934 947
34 858
520 568
408 464
232 432
999 504
71 982
957 372
570 436
281 309
410 405
521 275
554 589
4 707
498 148
5...

output:

mark
5
214 4
214 104
330 343
1 473
691 924

input:

1000 3438
246 901
989 554
606 682
479 559
190 120
735 811
18 372
644 186
316 36
563 872
266 521
257 956
607 450
917 161
221 669
639 160
925 300
341 848
191 211
800 162
774 480
40 776
182 323
694 528
460 539
188 395
169 754
311 398
131 959
182 263
879 971
802 441
188 541
11 91
82 169
912 44
338 909
4...

output:

ok

result:

ok all right

Test #6:

score: 100
Accepted
time: 623ms
memory: 3752kb

input:

1000 3057
985 223
432 967
405 822
845 650
893 646
599 718
754 710
333 73
392 355
895 496
200 562
816 36
457 953
9 623
889 662
482 590
249 29
689 694
185 990
285 690
12 323
611 560
903 722
476 86
105 666
441 193
695 640
36 617
840 42
80 527
977 539
606 150
384 585
784 648
919 360
157 532
568 98
995 8...

output:

mark
5
7 28
133 535
7 563
74 112
40 330

input:

1000 3062
308 42
689 747
772 470
49 962
294 380
226 107
596 589
66 334
811 816
952 421
123 849
316 66
990 648
653 416
467 520
22 995
951 446
770 799
3 705
225 73
529 609
17 263
46 475
93 939
706 283
136 971
771 678
212 413
721 356
257 761
695 62
622 464
269 117
262 15
889 339
431 970
191 192
65 274
...

output:

ok

result:

ok all right

Test #7:

score: 100
Accepted
time: 727ms
memory: 3772kb

input:

1000 3085
484 405
841 443
661 315
392 941
355 558
523 394
773 929
673 840
5 707
255 610
744 58
301 794
505 33
668 533
787 945
747 810
803 115
340 900
791 909
596 418
129 491
460 698
156 233
664 502
231 465
795 486
829 102
608 212
253 344
419 557
100 421
321 793
207 302
544 479
33 916
736 129
6 156
9...

output:

mark
5
193 729
729 341
181 193
658 374
377 249

input:

1000 3090
279 821
727 135
787 417
580 168
151 953
533 701
888 479
321 967
596 174
613 358
664 512
7 875
158 144
571 410
990 935
954 743
625 4
52 344
568 787
82 973
422 389
533 863
773 219
31 462
108 474
335 176
907 852
436 340
484 469
577 197
393 385
909 488
772 44
911 705
530 858
66 511
660 65
737 ...

output:

ok

result:

ok all right

Test #8:

score: 100
Accepted
time: 860ms
memory: 3820kb

input:

1000 4289
963 66
959 467
930 83
419 699
731 948
702 583
699 245
636 721
859 551
377 251
90 889
286 843
908 47
864 979
223 948
269 684
85 579
162 376
414 255
602 884
65 132
842 907
488 360
553 898
649 249
253 711
675 632
629 446
708 413
819 511
512 113
189 76
242 464
828 261
440 737
643 389
75 907
49...

output:

mark
5
682 231
51 130
588 430
231 352
682 69

input:

1000 4294
30 4
54 539
935 953
570 377
445 362
372 798
933 848
191 163
153 130
924 299
963 338
701 722
154 660
932 18
766 569
842 483
781 601
92 598
91 583
261 726
320 310
128 31
880 344
662 740
163 733
536 628
974 37
444 406
759 810
413 567
67 614
937 857
717 38
365 240
269 887
212 670
781 759
780 2...

output:

ok

result:

ok all right

Test #9:

score: 100
Accepted
time: 1074ms
memory: 3872kb

input:

1000 4763
544 167
316 76
78 841
699 1
645 745
827 262
568 545
595 81
924 561
108 253
397 626
142 967
613 397
723 633
711 259
363 249
5 436
165 88
178 463
734 529
195 324
135 41
1000 136
215 967
371 638
588 753
542 909
633 106
537 852
111 232
303 500
892 461
868 300
772 667
40 172
956 575
613 163
933...

output:

mark
5
317 571
164 124
317 224
10 644
140 153

input:

1000 4768
450 532
910 207
599 103
49 254
17 389
342 809
271 691
347 788
470 80
193 960
395 936
145 907
713 837
428 466
320 345
500 72
278 444
984 50
387 187
596 379
467 116
150 90
70 248
88 163
767 947
429 287
66 854
667 585
470 562
640 100
510 872
329 400
396 746
530 497
638 202
398 757
604 112
640...

output:

ok

result:

ok all right

Test #10:

score: 100
Accepted
time: 860ms
memory: 3992kb

input:

1000 4250
747 446
769 425
773 753
217 298
217 4
514 774
752 3
905 857
532 410
224 250
367 33
29 541
809 996
76 960
25 603
532 600
518 304
546 95
735 413
312 476
83 534
157 62
170 836
668 976
244 557
972 860
828 170
975 468
677 714
800 170
530 191
216 930
242 728
318 505
269 162
579 963
769 822
171 4...

output:

mark
5
385 310
385 853
305 385
816 359
83 899

input:

1000 4255
426 864
703 85
233 301
835 12
218 598
590 999
874 500
531 639
378 512
83 157
128 210
512 152
14 36
309 705
600 242
847 8
579 404
394 524
600 888
872 342
604 290
892 920
845 728
545 143
31 818
87 797
984 627
404 462
377 959
344 270
805 578
848 145
265 174
625 398
123 425
184 94
579 176
240 ...

output:

ok

result:

ok all right

Test #11:

score: 100
Accepted
time: 676ms
memory: 3788kb

input:

1000 3336
161 745
81 702
879 347
452 553
809 32
359 925
984 783
558 366
611 89
948 530
565 496
123 348
534 986
991 511
322 407
6 878
20 897
188 150
527 440
487 333
218 572
597 575
308 684
50 780
900 451
763 785
210 682
964 992
811 537
537 167
320 133
523 899
629 732
435 281
826 405
868 567
201 858
2...

output:

mark
5
206 615
519 250
309 519
311 948
206 273

input:

1000 3341
163 836
885 514
936 299
161 104
191 202
378 338
621 59
350 617
648 432
757 34
909 958
519 348
757 820
58 13
928 172
991 540
576 685
29 119
213 502
503 925
268 989
660 533
153 420
269 997
608 975
762 502
493 289
818 82
370 812
65 239
932 30
236 148
791 72
766 858
465 356
245 984
568 921
332...

output:

ok

result:

ok all right

Test #12:

score: 0
Wrong Answer
time: 806ms
memory: 3808kb

input:

1000 3482
910 881
481 989
349 262
963 679
970 752
651 210
86 339
724 310
765 410
118 619
662 351
568 148
292 61
136 385
997 772
210 735
816 310
698 649
581 313
414 280
92 872
965 925
35 930
813 29
617 210
854 940
486 479
412 644
660 623
126 85
664 327
459 165
266 113
108 206
686 660
918 536
173 366
...

output:

mark
5
938 497
887 342
388 497
292 364
787 352

input:

1000 3487
216 73
26 845
101 663
178 269
799 60
89 532
504 982
513 473
179 605
144 158
961 559
714 109
932 71
568 322
464 363
165 187
581 768
922 455
487 770
327 666
431 549
733 110
544 682
172 624
947 240
114 630
262 218
625 812
631 840
148 402
543 49
614 843
539 804
97 615
931 586
411 391
376 261
3...

output:

mark
5
386 813
390 331
637 487
386 375
254 98

result:

wrong answer Token "mark" doesn't correspond to pattern "ok"