QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#454205#8528. Chordsucup-team1525#WA 2900ms8132kbC++201.9kb2024-06-24 17:36:022024-06-24 17:36:03

Judging History

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

  • [2024-06-24 17:36:03]
  • 评测
  • 测评结果:WA
  • 用时:2900ms
  • 内存:8132kb
  • [2024-06-24 17:36:02]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
mt19937_64 rnd(time(0));
#define ull unsigned long long
struct dt
{
    int l,r,len;
    ull v;
    bool operator<(const dt &a)const
    {
        return (len==a.len?l<a.l:len<a.len);
    }
}a[N];
ull f[N*2];
int n;
inline void ins(int x,ull y)
{
    for (;x<=n*2;x+=x&(-x))
        f[x]^=y;
}
inline ull ask(int x)
{
    ull ans=0;
    for (;x;x-=x&(-x))
        ans^=f[x];
    return ans;
}
int g[N],h[N];
void raodong(int mx)
{
    for (int i=1;i<=50;++i)
    {
        g[i]=rnd()%mx+1;
        int q=min(n-g[i]+1,max(mx/2,10));
        h[i]=g[i]+rnd()%q;
        // h[i]=rnd()%n+1;
        // while (g[i]==h[i])
        // {
        //     h[i]=rnd()%n+1;
        // }
        swap(a[g[i]],a[h[i]]);
    }
}
void roll_back()
{
    for (int i=50;i;--i)
    {
        swap(a[g[i]],a[h[i]]);
    }
}
int main()
{
    clock_t bg=clock();
    scanf("%d",&n);
    for (int i=1;i<=n;++i)
    {
        scanf("%d%d",&a[i].l,&a[i].r);
        a[i].len=a[i].r-a[i].l;
        a[i].len=min(a[i].len,n*2-a[i].len);
        a[i].v=rnd();
        // a[i+n]={a[i].r,a[i].l,n*2-a[i].len};
    }
    sort(a+1,a+1+n);
    int ans=0;
    int mx=max(1,n/4);
    while (clock()-bg<=2.9*CLOCKS_PER_SEC)
    // for (int t=1;t<=100;++t)
    {
        int sum=0;
        for (int i=1;i<=n;++i)
            if (ask(a[i].l-1)==ask(a[i].r))
            {
                ++sum;
                ins(a[i].l,a[i].v);
                ins(a[i].r,a[i].v);
            }
        if (sum>ans)
        {
            ans=sum;
        }
        else
        {
            if (sum<ans)
            {
                roll_back();
                mx+=n/10;
                mx=min(n,mx);
            }
        }
        if (n==1)
            break;
        raodong(mx);
        for (int i=1;i<=2*n;++i)
            f[i]=0;
    }
    printf("%d\n",ans);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2577ms
memory: 5876kb

input:

5
1 2
4 10
7 9
3 5
6 8

output:

3

result:

ok 1 number(s): "3"

Test #2:

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

input:

1
1 2

output:

1

result:

ok 1 number(s): "1"

Test #3:

score: 0
Accepted
time: 2560ms
memory: 5948kb

input:

2
1 3
2 4

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 2668ms
memory: 6004kb

input:

2
1 4
2 3

output:

2

result:

ok 1 number(s): "2"

Test #5:

score: 0
Accepted
time: 2636ms
memory: 6060kb

input:

3
3 5
1 4
2 6

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: 0
Accepted
time: 2616ms
memory: 5900kb

input:

4
2 7
1 6
3 8
4 5

output:

2

result:

ok 1 number(s): "2"

Test #7:

score: 0
Accepted
time: 2644ms
memory: 6072kb

input:

6
8 9
6 7
4 10
1 5
11 12
2 3

output:

5

result:

ok 1 number(s): "5"

Test #8:

score: 0
Accepted
time: 2640ms
memory: 5924kb

input:

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

output:

4

result:

ok 1 number(s): "4"

Test #9:

score: 0
Accepted
time: 2710ms
memory: 6020kb

input:

13
8 16
2 13
14 23
10 11
7 17
6 24
12 18
9 20
4 15
19 21
3 26
1 25
5 22

output:

6

result:

ok 1 number(s): "6"

Test #10:

score: 0
Accepted
time: 2658ms
memory: 8132kb

input:

19
34 35
4 20
9 31
12 17
18 38
23 29
19 30
25 26
10 36
1 7
13 37
2 11
8 32
6 28
16 24
5 27
14 21
15 22
3 33

output:

8

result:

ok 1 number(s): "8"

Test #11:

score: 0
Accepted
time: 2704ms
memory: 6084kb

input:

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

output:

10

result:

ok 1 number(s): "10"

Test #12:

score: 0
Accepted
time: 2759ms
memory: 5904kb

input:

42
2 66
29 75
5 45
8 53
50 72
25 44
15 47
6 57
64 68
26 80
32 49
65 70
27 54
37 58
18 36
10 48
3 63
28 60
30 76
16 41
7 83
21 24
14 17
31 67
62 71
20 74
11 33
43 84
40 61
19 69
35 82
13 42
34 79
12 73
9 51
4 23
77 81
22 59
1 52
39 55
38 56
46 78

output:

11

result:

ok 1 number(s): "11"

Test #13:

score: 0
Accepted
time: 2776ms
memory: 6068kb

input:

63
40 105
6 104
45 83
16 22
31 34
51 57
64 92
75 112
70 82
65 121
32 93
18 60
30 68
72 77
86 101
10 47
85 94
36 71
11 35
27 126
56 74
15 52
19 91
88 110
76 97
25 33
58 109
42 54
12 26
73 107
99 118
29 106
44 90
3 9
23 122
14 79
87 116
4 81
17 111
41 53
50 123
38 124
13 114
67 96
5 100
55 115
43 62
4...

output:

17

result:

ok 1 number(s): "17"

Test #14:

score: 0
Accepted
time: 2820ms
memory: 5936kb

input:

94
109 118
69 152
93 185
111 162
17 188
15 175
35 123
13 95
72 186
83 160
52 117
24 159
128 163
56 179
141 168
25 58
44 82
47 53
78 172
100 105
70 106
143 164
4 88
99 182
98 146
57 77
38 112
91 149
45 174
125 138
26 34
37 121
62 134
97 187
2 66
22 40
153 181
86 108
19 155
33 130
103 177
11 21
18 126...

output:

21

result:

ok 1 number(s): "21"

Test #15:

score: 0
Accepted
time: 2844ms
memory: 8016kb

input:

141
31 127
1 73
84 94
158 254
129 208
35 114
112 201
182 222
18 259
27 267
67 271
14 160
22 269
89 161
57 58
49 86
8 184
202 256
24 43
194 198
225 273
204 265
79 270
66 249
54 250
130 268
26 162
165 261
197 257
119 279
216 232
21 274
151 179
106 140
28 48
122 206
65 186
3 177
90 92
15 105
163 262
14...

output:

32

result:

ok 1 number(s): "32"

Test #16:

score: 0
Accepted
time: 2852ms
memory: 8120kb

input:

211
101 338
116 315
84 296
142 211
22 419
260 266
157 261
231 360
95 100
27 111
286 409
355 372
50 348
97 178
39 349
153 217
63 203
236 289
156 278
37 311
40 306
282 384
113 240
168 365
5 89
190 322
71 414
77 191
10 325
87 357
321 376
370 380
207 362
30 165
9 170
128 287
43 398
56 180
310 335
42 70
...

output:

29

result:

ok 1 number(s): "29"

Test #17:

score: 0
Accepted
time: 2864ms
memory: 5976kb

input:

316
433 483
190 220
85 439
171 209
459 479
4 63
335 434
315 400
55 155
125 558
457 619
90 187
135 301
172 497
124 354
101 363
140 312
288 425
99 513
147 516
120 122
143 180
138 500
78 617
123 191
231 615
268 536
227 417
32 67
360 554
263 553
108 165
105 257
295 620
95 212
21 319
87 464
356 559
266 6...

output:

45

result:

ok 1 number(s): "45"

Test #18:

score: 0
Accepted
time: 2884ms
memory: 5908kb

input:

474
177 498
736 821
556 671
366 896
11 519
110 409
282 813
219 355
516 562
395 893
388 436
52 767
174 490
627 911
23 796
280 468
724 947
367 371
324 872
484 578
125 163
93 218
549 916
272 649
694 704
86 716
420 508
569 905
329 805
386 433
32 175
169 898
6 809
456 659
688 914
143 803
405 506
103 682
...

output:

53

result:

ok 1 number(s): "53"

Test #19:

score: 0
Accepted
time: 2884ms
memory: 6092kb

input:

711
394 512
506 1310
203 763
470 1161
548 1183
94 383
131 1123
467 478
141 695
969 1128
210 211
1045 1236
1184 1258
536 658
53 1174
115 687
648 911
410 735
266 732
226 1300
646 826
952 1019
353 1387
60 533
972 1221
418 1360
162 677
166 981
730 1130
859 1414
252 365
129 515
258 581
214 1290
1133 1289...

output:

61

result:

ok 1 number(s): "61"

Test #20:

score: 0
Accepted
time: 2900ms
memory: 6092kb

input:

1066
1612 1799
593 928
560 965
683 1118
1058 1221
664 879
696 1724
54 102
1580 1588
599 1444
796 1749
35 1831
1 1261
299 1420
607 1048
147 643
873 1405
450 1080
1310 1489
1029 1658
183 752
666 1797
211 1485
51 802
42 673
1484 1811
540 561
934 1869
571 2081
1070 1248
362 1149
641 740
1540 1755
1329 1...

output:

82

result:

ok 1 number(s): "82"

Test #21:

score: -100
Wrong Answer
time: 2896ms
memory: 5936kb

input:

1599
668 1208
169 1885
106 2776
28 96
812 2453
2216 3175
783 2096
1005 1448
1430 1831
1252 3133
957 2070
2278 3096
747 1967
1765 2448
2377 2694
1522 1993
529 1006
329 771
130 1634
2057 2243
1222 3030
410 2565
1654 2264
1117 1387
1168 2360
2292 2848
1386 1460
2101 2124
671 3156
2215 2829
637 2782
20 ...

output:

91

result:

wrong answer 1st numbers differ - expected: '95', found: '91'