UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#213987#2400. 椅子ThySecret55427ms14624kbC++112.8kb2024-11-14 21:25:472024-11-14 23:07:49

answer

#include <bits/stdc++.h>

using namespace std;

// #define int long long
// #define x first
// #define y second
#define File(a) freopen(a".in", "r", stdin), freopen(a".out", "w", stdout)

inline void debug() { cerr << '\n'; }
template<typename Type, typename... Other>
inline void debug(const Type& x, const Other&... y) { cerr << x << ' '; debug(y...); }
#define DEBUG(a...) cerr << "[" << #a << "] = ", debug(a);

typedef long long LL;
typedef pair<int, int> PII;

const int N = 1000010, M = 4000010;
const int INF = 0x3f3f3f3f;
const int D = 200000;

template<typename Type>
inline void read(Type &res)
{
    res = 0;
    int ch = getchar(), flag = 0;
    while (!isdigit(ch)) flag |= ch == '-', ch = getchar();
    while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
    res = flag ? -res : res;
}
template<typename Type, typename... Other>
inline void read(Type &res, Other&... y) { read(res), read(y...); }

int n, m, st, ed;
int cpy[N], h[N], e[M], ne[M], w[M], idx;
int dist[N], que[N], hh = 0, tt = -1;

inline void add(int a, int b, int c)
{
    e[++ idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx;
    e[++ idx] = a, w[idx] = 0, ne[idx] = h[b], h[b] = idx;
}

bool bfs()
{
    memset(dist, 0, sizeof dist);
    hh = 0, tt = -1;
    dist[st] = 1, que[++ tt] = st;

    while (hh <= tt)
    {
        int ver = que[hh ++];
        for (int i = h[ver]; ~i; i = ne[i])
        {
            int to = e[i];
            if (!dist[to] && w[i] > 0)
                dist[to] = dist[ver] + 1, que[++ tt] = to;
        }
    }
    return dist[ed];
}

int dfs(int ver, int flow)
{
    if (ver == ed || !flow) return flow;
    for (int &i = cpy[ver]; ~i; i = ne[i])
    {
        int to = e[i];
        if (dist[to] == dist[ver] + 1 && w[i] > 0)
        {
            int temp = dfs(to, min(flow, w[i]));
            if (temp > 0)
            {
                w[i] -= temp, w[i ^ 1] += temp;
                return temp;
            }
        }
    }
    return 0;
}

int dinic()
{
    int ans = 0, temp = 0;
    while (bfs())
    {
        memcpy(cpy, h, sizeof cpy);
        while (temp = dfs(st, INF))
            ans += temp;
    }
    return ans;
}

signed main()
{
    memset(h, -1, sizeof h), idx = -1;
    read(n, m);
    st = 0, ed = 1000001;

    for (int ver = 1; ver < m; ver ++)
        add(ver + D + 1, ver + D, INF), add(ver + 2 * D, ver + 2 * D + 1, INF);
    for (int ver = 1; ver <= m; ver ++)
        add(ver + D, ed, 1), add(ver + 2 * D, ed, 1);
    for (int ver = 1; ver <= n; ver ++)
    {
        int l, r; read(l, r);
        add(st, ver, 1), add(ver, l + D, 1), add(ver, r + 2 * D, 1);
    }

    cout << n - dinic() << '\n';
    // cout << dinic() << '\n';

    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 5
Accepted
time: 0ms
memory: 12904kb

input:

8 8
1 8
1 5
2 8
0 5
0 3
2 6
2 6
2 6

output:

1

result:

ok single line: '1'

Test #2:

score: 5
Accepted
time: 0ms
memory: 12904kb

input:

10 10
0 5
2 9
3 10
2 7
1 6
0 10
0 9
2 10
0 9
1 10

output:

2

result:

ok single line: '2'

Test #3:

score: 5
Accepted
time: 5ms
memory: 12908kb

input:

20 20
4 16
2 11
3 19
6 12
7 18
1 14
4 10
5 20
6 14
8 17
1 12
2 11
7 18
7 15
0 15
1 12
2 19
7 13
4 10...

output:

1

result:

ok single line: '1'

Test #4:

score: 5
Accepted
time: 8ms
memory: 12920kb

input:

96 93
2 67
5 61
4 74
15 68
3 63
40 91
14 58
6 66
9 57
18 85
13 63
40 85
17 89
16 73
10 72
15 74
15 6...

output:

7

result:

ok single line: '7'

Test #5:

score: 5
Accepted
time: 6ms
memory: 12920kb

input:

100 100
29 70
17 68
25 77
13 74
9 79
42 90
34 99
18 100
3 80
21 71
26 63
6 54
43 89
41 78
19 78
13 9...

output:

2

result:

ok single line: '2'

Test #6:

score: 5
Accepted
time: 16ms
memory: 13064kb

input:

952 954
182 871
114 769
110 694
91 741
22 509
53 841
124 858
16 465
160 789
24 720
96 939
56 689
313...

output:

64

result:

ok single line: '64'

Test #7:

score: 5
Accepted
time: 17ms
memory: 13076kb

input:

1000 1000
74 795
175 641
39 618
19 971
162 873
93 731
480 989
357 932
4 693
266 965
89 581
47 560
27...

output:

74

result:

ok single line: '74'

Test #8:

score: 5
Accepted
time: 63ms
memory: 13696kb

input:

4516 4690
665 4024
1062 3765
1573 4200
1035 4155
441 2678
31 3472
87 3450
146 2286
310 4267
1231 450...

output:

69

result:

ok single line: '69'

Test #9:

score: 5
Accepted
time: 75ms
memory: 13764kb

input:

5000 5000
62 4476
1146 3647
531 4569
1042 3464
2044 4817
2186 4584
2223 4892
1224 4761
1154 4943
147...

output:

250

result:

ok single line: '250'

Test #10:

score: 5
Accepted
time: 61ms
memory: 14132kb

input:

10000 5000
1106 4454
1138 4746
926 4805
609 4507
259 4543
1435 4211
790 3399
528 3426
38 4665
87 404...

output:

5347

result:

ok single line: '5347'

Test #11:

score: 5
Accepted
time: 176ms
memory: 14624kb

input:

10000 10000
2224 8599
3697 9779
1264 7760
266 8474
601 9386
5276 9907
4231 9619
2206 8589
3306 9731
...

output:

574

result:

ok single line: '574'

Test #12:

score: 0
Time Limit Exceeded

input:

93875 99655
0 25859
0 30798
0 89053
0 29230
0 93483
0 83280
0 47502
0 39669
0 69861
0 64184
0 35067
...

output:


result:


Test #13:

score: 0
Time Limit Exceeded

input:

100000 100000
0 50602
0 56129
0 65965
0 75241
0 71832
0 26413
0 79671
0 73842
0 78772
0 94149
0 3483...

output:


result:


Test #14:

score: 0
Time Limit Exceeded

input:

91057 96847
21419 89318
2406 89095
2941 51033
14888 77083
28023 74840
18260 62296
6297 51346
7735 88...

output:


result:


Test #15:

score: 0
Time Limit Exceeded

input:

100000 100000
16723 78322
7205 66894
9839 72285
7661 85725
38680 93140
6182 88375
30785 99006
38538 ...

output:


result:


Test #16:

score: 0
Time Limit Exceeded

input:

198495 197435
63738 165927
17757 117506
9207 170263
50748 141346
18132 120887
49285 188664
25304 190...

output:


result:


Test #17:

score: 0
Time Limit Exceeded

input:

199260 192470
22818 156104
9228 171776
43025 139453
39938 135662
18272 171006
68109 171295
28220 116...

output:


result:


Test #18:

score: 0
Time Limit Exceeded

input:

200000 200000
75002 167675
8656 181873
54606 156991
48075 167451
74414 194621
55633 180796
4565 1657...

output:


result:


Test #19:

score: 0
Time Limit Exceeded

input:

200000 200000
59298 170956
2760 194028
35447 153792
1945 163425
73195 176225
62065 185526
85886 1916...

output:


result:


Test #20:

score: 0
Time Limit Exceeded

input:

200000 200000
67496 171474
36806 170296
86759 193181
7951 171117
85324 184470
8949 171983
10465 1547...

output:


result: