QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#600565 | #9424. Stop the Castle 2 | tarjen | AC ✓ | 265ms | 47668kb | C++20 | 4.1kb | 2024-09-29 17:26:28 | 2024-09-29 17:26:30 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N=3e5+10,M=5e5+10;
class Maxflow{
private:
int nedge=1,p[2*M],nex[2*M],head[N],c[2*M],cur[2*M];
int dist[2*N];
int S,T;
void Addedge(int a,int b,int v){
p[++nedge]=b;nex[nedge]=head[a];head[a]=nedge;
c[nedge]=v;
}
bool bfs(){
queue<int>q;
for(int i=S;i<=T;i++)dist[i]=-1;
dist[S]=0;q.push(S);
while(!q.empty()){
int now=q.front();q.pop();
for(int k=head[now];k;k=nex[k])if(dist[p[k]]==-1&&c[k]>0){
dist[p[k]]=dist[now]+1;
q.push(p[k]);
}
}
return dist[T]>-1;
}
int dfs(int x,int low){
if(x==T)return low;
if(low==0)return 0;
int used=0;
for(int &k=cur[x];k;k=nex[k])if(dist[p[k]]==dist[x]+1&&c[k]>0){
int a=dfs(p[k],min(c[k],low-used));
c[k]-=a;c[k^1]+=a;used+=a;
if(low==used)break;
}
if(used==0)dist[x]=-1;
return used;
}
public:
void init(int s,int t){
for(int i=S;i<=T;i++)head[i]=0;
S=s,T=t;
nedge=1;
}
void addedge(int a,int b,int v){
// cout<<"addedge a="<<a<<" b="<<b<<" v="<<v<<endl;
Addedge(a,b,v);
Addedge(b,a,0);
}
vector<pair<int,int>> dinic(){
int flow=0;
while(bfs()){
for(int i=S;i<=T;i++)cur[i]=head[i];
flow+=dfs(S,1e9);
}
vector<pair<int,int>> v;
for(int i=S+1;i<T;i++){
for(int k=head[i];k;k=nex[k])if(c[k]==0&&(k%2==0)&&(p[k]>S&&p[k]<T)){
v.emplace_back(i,p[k]);
}
}
return v;
}
}sol;
struct point{
int x,y,id,type;
};
void solve()
{
int n,m,k;cin>>n>>m>>k;
k=m-k;
vector<point> a;
for(int i=0;i<n;i++){
int x,y;cin>>x>>y;
a.push_back(point{x,y,i,0});
}
for(int i=0;i<m;i++){
int x,y;cin>>x>>y;
a.push_back(point{x,y,i,1});
}
vector<vector<point>>p;
vector<vector<int>> link(m);
sort(a.begin(),a.end(),[&](point x,point y){
return make_pair(x.x,x.y)<make_pair(y.x,y.y);
});
for(int i=0;i<n+m;i++)if(a[i].type==0){
vector<point> v;
for(int j=i+1;j<n+m;j++){
if(a[j].x!=a[i].x)break;
if(a[j].type==1)v.push_back(a[j]);
else{
for(auto it:v)link[it.id].push_back((int)p.size());
p.push_back(v);
break;
}
}
}
sort(a.begin(),a.end(),[&](point x,point y){
return make_pair(x.y,x.x)<make_pair(y.y,y.x);
});
for(int i=0;i<n+m;i++)if(a[i].type==0){
vector<point> v;
for(int j=i+1;j<n+m;j++){
if(a[j].y!=a[i].y)break;
if(a[j].type==1)v.push_back(a[j]);
else{
for(auto it:v)link[it.id].push_back((int)p.size());
p.push_back(v);
break;
}
}
}
int s=0,t=(int)p.size()+1;
sol.init(s,t);
vector<int> vis(p.size());
map<pair<int,int>,int> edge_id;
for(int i=0;i<m;i++){
assert((int)link[i].size()<=2);
if(link[i].size()==2){
sol.addedge(link[i][0]+1,link[i][1]+1,1);
edge_id[{link[i][0],link[i][1]}]=i;
if(!vis[link[i][0]])vis[link[i][0]]=1,sol.addedge(s,link[i][0]+1,1);
if(!vis[link[i][1]])vis[link[i][1]]=1,sol.addedge(link[i][1]+1,t,1);
}
}
// cout<<"p="<<p.size()<<" edge="<<edge_id.size()<<endl;
auto match=sol.dinic();
int all=p.size();
vector<int>ok(p.size());
vector<int>ans;
vector<int>in(m);
for(auto [x,y]:match)if(k>0){
k--;
x--,y--;
// cout<<"x="<<x<<" y="<<y<<endl;
ok[x]=1,ok[y]=1;
all-=2;
in[edge_id[{x,y}]]=1;
}
for(int i=0;i<p.size();i++)if(!ok[i]&&k>0&&!p[i].empty()){
k--;
all--;
ok[i]=1;
in[p[i][0].id]=1;
}
for(int i=0;i<m;i++)if(!in[i]&&k>0){
k--;
in[i]=1;
}
cout<<all<<"\n";
for(int i=0;i<m;i++)if(!in[i])ans.push_back(i+1);
for(auto it:ans)cout<<it<<" ";;cout<<"\n";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T;cin>>T;while(T--)solve();
return 0;
}
这程序好像有点Bug,我给组数据试试?
详细
Test #1:
score: 100
Accepted
time: 3ms
memory: 13788kb
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 3 5 6 2 2 0 2 3
result:
ok ok 3 cases (3 test cases)
Test #2:
score: 0
Accepted
time: 62ms
memory: 18572kb
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 11 12 13 14 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: 148ms
memory: 41788kb
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 4929 4932 4934 4937 4941 4943 4944 4948 4949 4951 4953 4959 4960 4962 4963 4965 4970 4972 4973 4974 4975 4976 4977 4979 4982 4983 4984 4986 4989 4995 4996 4997 4998 5001 5002 5004 5006 5007 5008 5010 5011 5012 5013 5018 5019 5022 5026 5030 5035 5036 5037 5039 5042 5043 5046 5048 5049 5050 5053...
result:
ok ok 1 cases (1 test case)
Test #4:
score: 0
Accepted
time: 95ms
memory: 32976kb
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 1 2 5 6 8 9 10 11 13 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 41 43 44 45 46 47 49 50 51 52 54 55 56 57 59 60 61 62 63 65 66 67 68 69 70 71 72 75 76 79 80 81 82 83 87 90 91 92 93 94 95 96 99 100 101 102 104 105 106 107 108 109 110 111 112 113 114 115 118 119 120 124...
result:
ok ok 1 cases (1 test case)
Test #5:
score: 0
Accepted
time: 235ms
memory: 38756kb
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 60451 60452 60453 60454 60455 60457 60458 60459 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...
result:
ok ok 1 cases (1 test case)
Test #6:
score: 0
Accepted
time: 226ms
memory: 37692kb
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: 50ms
memory: 22492kb
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 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 27 28 29 30 31 34 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 56 57 58 59 61 62 63 64 65 66 67 68 69 71 72 73 75 76 77 79 80 81 82 83 84 86 87 88 89 90 91 94 95 96 99 103 104 108 109 110 111 112 113 114 116 118 119 120 122 1...
result:
ok ok 1 cases (1 test case)
Test #8:
score: 0
Accepted
time: 42ms
memory: 30340kb
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: 83ms
memory: 22320kb
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: 263ms
memory: 32692kb
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: 77ms
memory: 22476kb
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: 239ms
memory: 34944kb
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: 80ms
memory: 22620kb
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: 265ms
memory: 35588kb
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: 141ms
memory: 31404kb
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 1 2 3 4 5 6 7 8 11 12 14 15 16 22 23 25 26 27 28 29 30 32 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 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 91 92 93 94 95 96 98 99 100 101 102 103 104 105 107 108 109 112 113 114 115 116 117 1...
result:
ok ok 1 cases (1 test case)
Test #16:
score: 0
Accepted
time: 120ms
memory: 40264kb
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 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 36 37 38 40 41 43 44 45 46 47 48 49 50 51 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 101 102 103 104 ...
result:
ok ok 1 cases (1 test case)
Test #17:
score: 0
Accepted
time: 81ms
memory: 27444kb
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 2 4 6 8 9 11 19 1 2 3 4 5 6 7 9 10 25 1 2 3 4 6 7 8 9 10 11 13 1 2 3 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 26 36 1 3 4 6 8 9 12 18 1 2 3 4 20 1 2 3 4 6 20 1 2 3 5 6 7 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 3 4 5 6 8 9 10 11 13 15 16 1...
result:
ok ok 556 cases (556 test cases)
Test #18:
score: 0
Accepted
time: 184ms
memory: 47668kb
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 1 2 5 6 7 9 11 12 13 15 16 17 18 19 20 21 23 25 26 27 28 30 31 32 33 35 37 39 40 41 42 43 46 47 50 52 54 55 56 57 59 60 62 63 65 66 67 68 69 71 72 73 74 75 76 77 78 80 81 82 84 86 87 88 89 90 91 92 93 95 96 97 98 101 102 103 104 105 106 107 109 110 111 112 114 115 116 117 118 119 120 122 123 ...
result:
ok ok 1 cases (1 test case)
Extra Test:
score: 0
Extra Test Passed