ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#214010 | #2400. 椅子 | Filberte | 55 | 441ms | 3764kb | C++11 | 2.4kb | 2024-11-14 22:25:40 | 2024-11-14 23:10:49 |
answer
#include <bits/stdc++.h>
using namespace std;
bool mst;
namespace MF{
#define int_64 int
static const int maxn = 8e5 + 100;
static const int maxm = 3e6 + 5e5 + 100;
const int_64 Mxf = 1e9;
struct E{int to, nxt;int_64 f;}e[maxm];
int hd[maxn], cur[maxn], _te = 1;
void add_edge(int u, int v, int_64 w = 1){
e[++_te] = {v, hd[u], w};hd[u] = _te;
e[++_te] = {u, hd[v], 0};hd[v] = _te;
}
int nods, s, t;
int_64 maxf = 0;
int d[maxn];
bool bfs(){
for(int i = 0;i <= nods;i++) d[i] = 0, cur[i] = hd[i];
queue<int> q;q.push(s);d[s] = 1;
while(!q.empty()){
int u = q.front();q.pop();
for(int i = hd[u];i;i = e[i].nxt){
int v = e[i].to;
if(e[i].f && !d[v]){
d[v] = d[u] + 1;
q.push(v);
if(v == t) return 1;
}
}
}
return 0;
}
int_64 dfs(int u, int_64 flow){
if(u == t) return flow;
int_64 sum = 0;
for(int &i = cur[u];i;i = e[i].nxt){
int v = e[i].to;
if(e[i].f && d[v] == d[u] + 1){
int_64 gt = dfs(v, min(e[i].f, flow));
e[i].f -= gt, e[i ^ 1].f += gt;
sum += gt, flow -= gt;
}
}
if(!sum) d[u] = 0;
return sum;
}
void dinic(){
while(bfs()) maxf += dfs(s, Mxf);
}
}
using namespace MF;
int n, m;
const int N = 2e5 + 100;
int pf[N], sf[N];
bool med;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n >> m;nods = n + m;
pf[1] = ++nods;add_edge(pf[1], n + 1);
for(int i = 2;i <= m;i++){
pf[i] = ++nods;
add_edge(pf[i - 1], pf[i], Mxf);
add_edge(pf[i], n + i);
}
sf[m] = ++nods;add_edge(sf[m], n + m);
for(int i = m - 1;i >= 1;i--){
sf[i] = ++nods;
add_edge(sf[i + 1], sf[i], Mxf);
add_edge(sf[i], n + i);
}
s = 0, t = ++nods;
for(int i = 1;i <= n;i++){
add_edge(s, i);
int x, y;cin >> x >> y;
if(x >= 1) add_edge(i, sf[x]);
if(y <= m) add_edge(i, pf[y]);
}
for(int i = 1;i <= m;i++) add_edge(n + i, t);
dinic();
cout << n - maxf << endl;
//cerr << fixed << setprecision(3) << 1.0 * (&mst - &med) / 1024.0 / 1024.0 << endl;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 5
Accepted
time: 0ms
memory: 1272kb
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: 1268kb
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: 0ms
memory: 1276kb
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: 0ms
memory: 1288kb
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: 0ms
memory: 1288kb
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: 7ms
memory: 1524kb
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: 7ms
memory: 1536kb
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: 69ms
memory: 2444kb
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: 82ms
memory: 2532kb
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: 66ms
memory: 2964kb
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: 210ms
memory: 3764kb
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...