QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#627300#9424. Stop the Castle 211d10xyAC ✓392ms33468kbC++143.3kb2024-10-10 15:29:352024-10-10 15:29:35

Judging History

This is the latest submission verdict.

  • [2024-10-10 15:29:35]
  • Judged
  • Verdict: AC
  • Time: 392ms
  • Memory: 33468kb
  • [2024-10-10 15:29:35]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
namespace mf{
constexpr int N=200010,M=1000010;
int head[N],cur[N],d[N],nex[M],cap[M],ver[M],n,s,t,tot=1;
queue<int>q;
inline void add(int u,int v,int c){
   nex[++tot]=head[u],cap[tot]=c,ver[tot]=v,head[u]=tot;
   nex[++tot]=head[v],cap[tot]=0,ver[tot]=u,head[v]=tot;
}
bool bfs(){
   for(int i=1;i<=n;i++)d[i]=-1,cur[i]=head[i];
   q.push(s),d[s]=0;
   for(;!q.empty();){
      int u=q.front();q.pop();
      for(int e=head[u];e;e=nex[e]){
         int v=ver[e],c=cap[e];
         if(c&&d[v]==-1){
            d[v]=d[u]+1,q.push(v);
         }
      }
   }return d[t]!=-1;
}
int dinic(int u,int flow){
   if(u==t)return flow;
   int rest=flow;
   for(int e=cur[u];e&&rest;e=nex[e]){
      cur[u]=e;
      int v=ver[e],c=cap[e];
      if(c&&d[u]+1==d[v]){
         int f=dinic(v,min(rest,c));
         if(!f)d[v]=-1;
         cap[e]-=f,cap[e^1]+=f,rest-=f;
      }
   }return flow-rest;
}
set<pair<int,int>>calc(){
   for(;bfs();dinic(s,1e9));
   set<pair<int,int>>mtc;
   for(int e=head[s];e;e=nex[e])if(!cap[e]){
      int u=ver[e],v;
      for(int o=head[u];o;o=nex[o])if(!cap[o])v=ver[o];
      mtc.emplace(u,v);
   }
   return mtc;
}
void clear(){
   for(int i=1;i<=n;i++)head[i]=0;
}
}
int n,m,k,cutR[100010],cutC[100010];
void solve(){
   cin>>n>>m>>k;
   int cnt=0;
   map<int,vector<int>>rows,cols;
   map<pair<int,int>,int>idrow,idcol;
   for(int i=1,x,y;i<=n;i++){
      scanf("%d%d",&x,&y);
      rows[x].push_back(y);
      cols[y].push_back(x);
   }
   for(auto&X:rows){
      sort(begin(X.second),end(X.second));
      cnt+=X.second.size()-1;
   }
   for(auto&X:cols){
      sort(begin(X.second),end(X.second));
      cnt+=X.second.size()-1;
   }
   map<int,int>raw;
   mf::s=++mf::n,mf::t=++mf::n;
   for(int i=1,x,y;i<=m;i++){
      scanf("%d%d",&x,&y);
      cutR[i]=cutC[i]=0;
      if(rows.count(x)){
         auto&X=rows[x];
         if(X[0]<y&&y<X.back()){
            int&u=idrow[{x,*upper_bound(begin(X),end(X),y)}];
            if(!u)u=++mf::n,mf::add(mf::s,u,1);
            cutR[i]=u;
         }
      }
      if(cols.count(y)){
         auto&X=cols[y];
         if(X[0]<x&&x<X.back()){
            int&u=idcol[{y,*upper_bound(begin(X),end(X),x)}];
            if(!u)u=++mf::n,mf::add(u,mf::t,1);
            cutC[i]=u;
         }
      }
      if(cutR[i]&&cutC[i])mf::add(cutR[i],cutC[i],1);
   }
   auto mtc=mf::calc();
   set<int>mtcR,mtcC;
   for(auto X:mtc)mtcR.insert(X.first),mtcC.insert(X.second);
   vector<int>ans[3],vis(m+1);
   for(int i=1;i<=m;i++)if(mtc.count({cutR[i],cutC[i]}))ans[0].push_back(i),vis[i]=1;
   for(int i=1;i<=m;i++)if(!vis[i]){
      if(cutR[i]&&mtcR.insert(cutR[i]).second)ans[1].push_back(i),vis[i]=1;
      else if(cutC[i]&&mtcC.insert(cutC[i]).second)ans[1].push_back(i),vis[i]=1;
   }
   for(int i=1;i<=m;i++)if(!vis[i])ans[2].push_back(i);
   vector<int>realans;
   k=m-k;
   for(int u:ans[0]){
      if(!k)realans.push_back(u);
      else cnt-=2,k--;
   }
   for(int u:ans[1]){
      if(!k)realans.push_back(u);
      else cnt--,k--;
   }
   for(int u:ans[2]){
      if(!k)realans.push_back(u);
      else k--;
   }
   printf("%d\n",cnt);
   for(int u:realans)printf("%d ",u);puts("");
   mf::clear();
}
int main(){
   int T;for(cin>>T;T--;)solve();
   return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 12056kb

input:

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

output:

4
2 6 3 5 
2
2 
0
2 3 

result:

ok ok 3 cases (3 test cases)

Test #2:

score: 0
Accepted
time: 96ms
memory: 16588kb

input:

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

output:

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

result:

ok ok 1224 cases (1224 test cases)

Test #3:

score: 0
Accepted
time: 231ms
memory: 30364kb

input:

1
86289 95092 40401
911 152
1 270
135 731
347 451
283 224
338 348
166 346
12 385
590 763
939 176
232 405
122 946
397 576
795 823
546 392
33 718
444 598
954 852
185 662
732 539
172 681
386 148
76 495
163 323
711 201
278 363
531 275
66 122
823 983
234 792
102 188
985 423
804 712
419 636
318 331
693 68...

output:

81531
5811 5813 5814 5817 5824 5826 5827 5829 5831 5834 5835 5841 5846 5847 5848 5849 5851 5854 5862 5863 5864 5867 5868 5869 5872 5873 5874 5876 5878 5879 5883 5884 5885 5887 5889 5893 5894 5895 5897 5898 5899 5902 5911 5914 5917 5919 5920 5923 5924 5926 5927 5930 5932 5933 5934 5940 5941 5949 5956...

result:

ok ok 1 cases (1 test case)

Test #4:

score: 0
Accepted
time: 238ms
memory: 27408kb

input:

1
99057 99722 73893
190482185 274379837
466851670 641324039
993028302 128875937
102891466 286559847
526771097 794238060
565736409 328262657
190329865 598878250
790626887 595298790
308031819 470646878
341575785 374318107
257299536 280924175
64420619 591124604
323023069 811512407
428956686 719615923
2...

output:

82045
45312 45313 45315 45319 45324 45325 45328 45331 45341 45357 45377 45383 45386 45393 45396 45406 45411 45418 45420 45429 45431 45442 45443 45446 45447 45450 45452 45454 45459 45460 45471 45474 45481 45500 45501 45504 45510 45511 45517 45522 45524 45525 45534 45540 45543 45546 45547 45554 45555 ...

result:

ok ok 1 cases (1 test case)

Test #5:

score: 0
Accepted
time: 392ms
memory: 23576kb

input:

1
100000 99990 27662
913840909 999962982
690565691 31053
780601566 31053
54745498 31053
5383 859704869
538124857 999962982
5383 66851413
1444277 31053
119603839 999962982
999833258 543197820
999833258 349576387
999833258 759855830
999833258 124692224
266093388 999962982
5383 100041707
999833258 2843...

output:

100891
60460 60462 60463 60464 60465 60466 60468 60470 60471 60472 60473 60475 60476 60477 60478 60479 60480 60482 60483 60485 60486 60487 60489 60490 60491 60492 60493 60496 60497 60498 60499 60500 60501 60502 60503 60504 60505 60507 60508 60510 60515 60516 60517 60518 60519 60520 60521 60522 60523...

result:

ok ok 1 cases (1 test case)

Test #6:

score: 0
Accepted
time: 348ms
memory: 24816kb

input:

1
100000 49997 21428
9380 4333
9380 999999628
49202 4333
49202 999999628
50841 4333
50841 999999628
77418 4333
77418 999999628
95722 4333
95722 999999628
144002 4333
144002 999999628
234359 4333
234359 999999628
268942 4333
268942 999999628
288956 4333
288956 999999628
415094 4333
415094 999999628
4...

output:

100000
7099 7100 7102 7103 7104 7105 7106 7108 7110 7113 7114 7117 7119 7120 7122 7123 7126 7130 7131 7134 7135 7136 7140 7145 7149 7151 7154 7157 7158 7160 7162 7163 7167 7170 7172 7173 7174 7176 7178 7182 7183 7184 7188 7190 7197 7199 7201 7204 7205 7206 7208 7209 7211 7212 7213 7215 7216 7221 722...

result:

ok ok 1 cases (1 test case)

Test #7:

score: 0
Accepted
time: 209ms
memory: 29408kb

input:

1
100000 100000 76259
931427170 7
367311884 7
646435086 7
925372747 7
371054451 7
284185575 7
695090232 7
889183241 7
615617158 7
44230096 7
293281406 7
758261641 7
685549291 7
679471071 7
723138327 7
901136691 7
49281635 7
256352978 7
320188290 7
78730802 7
788131872 7
234735044 7
664906524 7
79430...

output:

76258
31263 31265 31268 31269 31272 31274 31275 31276 31281 31282 31284 31285 31286 31289 31290 31291 31292 31293 31298 31301 31302 31305 31306 31308 31309 31311 31312 31313 31315 31316 31317 31318 31321 31322 31323 31324 31330 31331 31332 31333 31337 31338 31339 31340 31342 31345 31346 31347 31348 ...

result:

ok ok 1 cases (1 test case)

Test #8:

score: 0
Accepted
time: 72ms
memory: 29804kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

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

result:

ok ok 1 cases (1 test case)

Test #9:

score: 0
Accepted
time: 94ms
memory: 18808kb

input:

556
16 6 3
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
2 3
3 3
3 2
4 2
2 4
4 4
32 12 6
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 ...

output:

14
2 4 5 
32
1 3 6 7 8 9 
31
3 5 6 7 8 11 14 16 
8
1 
13
2 4 
19
1 2 3 6 10 
11
2 3 4 
20
1 2 4 
15
3 4 6 7 
33
1 2 3 5 7 11 13 
31
1 2 3 5 8 10 14 15 
19
1 5 6 9 10 
31
1 3 4 7 8 
15
1 2 6 7 
28
4 6 7 8 10 
11
1 
19
2 3 5 7 10 
23
2 3 4 7 8 11 
34
2 3 4 5 6 8 9 15 
31
3 5 7 8 9 12 13 14 
29
2 4 5 6...

result:

ok ok 556 cases (556 test cases)

Test #10:

score: 0
Accepted
time: 392ms
memory: 27316kb

input:

1
100000 50000 25000
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 4 5 7 8 10 11 14 15 18 19 20 22 25 28 30 33 34 36 38 39 41 43 45 46 47 48 51 54 55 56 57 60 61 63 64 65 68 78 82 85 88 89 90 91 94 97 102 103 104 109 111 113 114 115 117 118 119 121 122 124 129 130 132 135 137 138 141 143 145 146 147 148 149 151 152 153 155 156 157 158 159 160 162 164 165 17...

result:

ok ok 1 cases (1 test case)

Test #11:

score: 0
Accepted
time: 98ms
memory: 18988kb

input:

556
32 15 7
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
7 6
4 3
5 4
2 2
...

output:

28
1 2 3 7 8 10 15 
11
1 4 
20
3 4 
23
4 7 8 9 10 
26
1 2 6 7 8 
17
1 
10
2 
31
2 3 6 8 
14
1 
31
2 3 4 5 7 11 14 
34
2 3 4 5 7 8 15 
16
3 
32
1 2 6 7 8 
29
3 5 
28
1 6 7 8 10 12 15 
31
1 2 4 5 6 8 14 
25
3 5 8 9 
15
2 4 5 
29
1 5 6 9 11 
31
1 4 7 8 
15
1 2 7 
29
1 3 
27
1 3 6 
19
5 6 7 9 
25
1 6 7 ...

result:

ok ok 556 cases (556 test cases)

Test #12:

score: 0
Accepted
time: 332ms
memory: 33468kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 3 4 6 8 10 12 17 20 22 25 26 27 29 30 32 33 34 35 37 39 42 44 47 48 49 51 54 58 59 60 61 68 69 70 72 74 75 77 78 81 82 84 85 88 89 90 91 93 94 96 97 98 100 103 110 111 112 114 115 116 120 123 124 127 129 130 133 135 136 139 140 143 145 146 149 150 152 153 160 163 169 171 174 175 176 178 179 ...

result:

ok ok 1 cases (1 test case)

Test #13:

score: 0
Accepted
time: 100ms
memory: 19184kb

input:

556
22 1 1
2 1
2 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
1 10
1000000000 10
1 11
1000000000 11
2 2
18 3 1
2 1
2 1000000000
3 1
3 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 ...

output:

29
1 
19
1 
20
1 5 
14
2 5 
25
2 
28
1 2 3 4 6 8 9 
23
1 
29
3 5 8 10 11 
28
2 3 5 6 
5
1 
23
6 7 8 9 11 
31
2 3 5 10 13 14 15 
29
2 3 
7
1 
26
1 
27
2 3 6 9 12 13 
24
1 5 7 
14
3 5 
32
3 4 5 6 10 11 13 14 
24
1 2 5 
27
1 2 3 6 7 10 
32
1 2 3 4 5 9 14 15 
30
1 3 5 
24
2 3 7 
15
2 3 6 
26
1 
18
1 2 6...

result:

ok ok 556 cases (556 test cases)

Test #14:

score: 0
Accepted
time: 340ms
memory: 32024kb

input:

1
100000 49999 24999
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

99996
1 2 8 11 13 14 15 16 17 19 20 21 26 29 31 36 39 42 45 46 49 51 53 54 55 57 61 62 64 67 68 69 71 73 74 76 78 79 80 81 82 84 85 88 89 91 94 100 101 103 104 109 110 112 113 115 116 120 123 127 130 131 132 133 136 141 147 149 150 151 153 154 155 158 159 161 163 167 168 170 171 173 174 175 177 178 ...

result:

ok ok 1 cases (1 test case)

Test #15:

score: 0
Accepted
time: 176ms
memory: 19948kb

input:

1
100000 49998 34141
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

118282
82 103 151 157 210 236 351 381 485 618 659 737 754 783 849 890 933 1263 1439 1522 1588 1640 2130 2237 2240 2401 2409 2486 2510 2671 2934 3003 3048 3114 3164 3265 3336 3349 3430 3605 3795 4267 4481 4560 4587 4700 4762 4798 4991 5044 5122 5293 5494 5759 5770 5885 5969 5984 6020 6076 6130 6134 6...

result:

ok ok 1 cases (1 test case)

Test #16:

score: 0
Accepted
time: 202ms
memory: 27604kb

input:

1
100000 82275 67072
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

119590
1 2 3 4 5 6 9 10 11 12 13 15 16 19 20 24 25 26 28 30 33 34 36 40 41 43 44 46 50 51 53 54 55 57 59 60 62 64 65 66 67 68 70 72 73 74 76 77 79 80 81 82 83 84 86 88 90 91 94 95 96 98 101 102 103 104 106 107 108 109 110 111 112 113 115 116 117 118 120 121 122 124 125 126 130 133 137 138 139 140 14...

result:

ok ok 1 cases (1 test case)

Test #17:

score: 0
Accepted
time: 109ms
memory: 14788kb

input:

556
30 12 6
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
1 2
1000000000 2
1 3
1000000000 3
1 4
1000000000 4
1 5
1000000000 5
1 6
1000000000 6
1 7
1000000000 7
1 8
1000000000 8
1 9
1000000000 9
2 6
2 8
3 4
4 4
4 8
5 3
5 7
5 8
6...

output:

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

result:

ok ok 556 cases (556 test cases)

Test #18:

score: 0
Accepted
time: 247ms
memory: 28292kb

input:

1
100000 99991 75553
2 1
2 1000000000
3 1
3 1000000000
4 1
4 1000000000
5 1
5 1000000000
6 1
6 1000000000
7 1
7 1000000000
8 1
8 1000000000
9 1
9 1000000000
10 1
10 1000000000
11 1
11 1000000000
12 1
12 1000000000
13 1
13 1000000000
14 1
14 1000000000
15 1
15 1000000000
16 1
16 1000000000
17 1
17 10...

output:

101120
321 349 640 1157 1235 1327 2297 2299 2396 2540 3156 4519 5375 5585 5769 5829 6221 6791 7279 7287 7335 7816 8464 8533 8767 9000 9393 9546 9562 9592 9612 9739 10067 10090 10309 11755 12099 12117 12214 12219 12864 13156 13185 13392 13396 14152 15545 15876 16216 16589 16590 16634 16899 17974 1853...

result:

ok ok 1 cases (1 test case)

Extra Test:

score: 0
Extra Test Passed