QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#91403 | #2992. 劈配 | tricyzhkx | 50 | 94ms | 38360kb | C++14 | 2.5kb | 2023-03-28 20:08:28 | 2023-03-28 20:08:32 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
int s,t,thead[410],a[210],b[210],c[210];
struct Graph
{
int head[410],pre[410],to[10010],cap[10010],flow[10010],nxt[10010],tot;
Graph():tot(1){}
void addedge(int u,int v,int c)
{
to[++tot]=v;
cap[tot]=c;flow[tot]=0;
nxt[tot]=head[u];
head[u]=tot;
}
void add(int u,int v,int c){addedge(u,v,c);addedge(v,u,0);}
void Roll(int ttot)
{
memcpy(head+1,thead+1,sizeof(int)*t);
tot=ttot;
}
bool bfs()
{
static bool vis[410];
static queue<int> que;
memset(vis+1,0,sizeof(bool)*t);
pre[s]=0;vis[s]=1;que.push(s);
while(!que.empty())
{
int u=que.front();que.pop();
for(int i=head[u];i;i=nxt[i])
{
int v=to[i];
if(cap[i]>flow[i] && !vis[v]) vis[v]=1,pre[v]=i,que.push(v);
}
}
return vis[t];
}
void aug(){for(int i=pre[t];i;i=pre[to[i^1]]) flow[i]++,flow[i^1]--;}
}G[210];
vector<int> A[210][210];
int main()
{
int T,C;
cin>>T>>C;
while(T--)
{
int n,m,x;
scanf("%d%d",&n,&m);
s=n+m+1;t=s+1;
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&x);
if(x) A[i][x].push_back(j);
}
for(int i=1;i<=n;i++) scanf("%d",&c[i]);
for(int i=1;i<=m;i++) G[0].add(i+n,t,b[i]);
for(int i=1;i<=n;i++)
{
G[i]=G[i-1];G[i].add(s,i,1);
auto judge=[&](int x)
{
int ttot=G[i].tot;
memcpy(thead+1,G[i].head+1,sizeof(int)*t);
for(int j=1;j<=x;j++)
for(int k:A[i][j])
G[i].add(i,k+n,1);
bool ans=G[i].bfs();
G[i].Roll(ttot);
return ans;
};
int l=1,r=m+1,mid;
while(l<r)
{
mid=(l+r)/2;
if(judge(mid)) r=mid;
else l=mid+1;
}
a[i]=l;
for(int j:A[i][l]) G[i].add(i,j+n,1);
G[i].bfs();G[i].aug();
}
for(int i=1;i<=n;i++) printf("%d%c",a[i]," \n"[i==n]);
for(int i=1;i<=n;i++)
if(a[i]<=c[i]) printf("0%c"," \n"[i==n]);
else
{
auto judge=[&](int x)
{
int ttot=G[x].tot;
memcpy(thead+1,G[x].head+1,sizeof(int)*t);
G[x].add(s,i,1);
for(int j=1;j<=c[i];j++)
for(int k:A[i][j])
G[x].add(i,k+n,1);
bool ans=G[x].bfs();
G[x].Roll(ttot);
return ans;
};
int l=0,r=i-1,mid;
while(l<r)
{
mid=(l+r+1)/2;
if(judge(mid-1)) l=mid;
else r=mid-1;
}
printf("%d%c",i-l," \n"[i==n]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
A[i][j].clear();
for(int i=0;i<=n;i++)
{
memset(G[i].head+1,0,sizeof(int)*t);
G[i].tot=1;
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 10
Accepted
time: 3ms
memory: 36104kb
input:
5 1 10 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
output:
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 1 1 2 2 2 2 2 2 2 0 0 1 2 3 4 5 6 7 1 2 2 2 2 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 1 1 1 1 2 2 2 2 2 2 0 0 0 0 1 2 3 4 5 6
result:
ok 10 lines
Test #2:
score: 0
Wrong Answer
time: 2ms
memory: 37684kb
input:
5 2 10 2 10 10 1 1 2 2 2 2 2 2 1 1 1 1 2 2 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 8 2 1 1 1 0 0 2 0 1 1 0 0 2 0 2 2 0 1 0 2 2 2 2 2 2 2 2 10 2 1 1 0 2 2 0 0 1 2 0 2 0 2 0 1 0 0 1 1 0 1 0 2 2 2 2 2 2 2 2 2 2 8 2 1 1 0 1 2 0 1 0 0 2 0 1 0 1 1 0 1 0 2 2 2 2 2 2 2 2 10 2 2 3 0 1 0 1 0 1 1 0 0 1 0 2 0 1 0 2 1 0...
output:
1 2 2 2 1 1 2 1 1 1 0 0 0 0 0 0 0 0 0 0 1 2 3 3 3 3 3 3 0 0 1 3 3 4 6 7 2 2 3 3 3 3 3 3 3 3 0 0 2 2 3 4 5 7 7 8 1 2 3 3 3 3 3 3 0 0 1 3 4 5 5 6 1 1 1 1 3 3 3 3 3 3 0 0 0 0 2 3 4 5 4 7
result:
wrong answer 9th lines differ - expected: '1 1 1 1 3 3 3 3 1 3', found: '1 1 1 1 3 3 3 3 3 3'
Test #3:
score: 10
Accepted
time: 4ms
memory: 36572kb
input:
5 3 10 3 10 10 10 2 2 2 1 1 1 3 3 3 1 1 1 2 2 2 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 3 2 3 1 2 2 2 3 2 1 8 3 1 1 1 3 3 0 0 1 3 0 1 1 0 1 3 2 0 3 2 0 1 2 0 1 2 0 3 2 1 1 3 3 2 2 2 10 3 2 2 1 1 1 0 0 1 2 0 1 2 2 0 2 0 1 2 0 2 2 2 2 0 0 2 2 0 1 2 1 1 0 1 1 1 1 1 1 2 1 2 2 10 3 1 2 1 3 0 2 2 2 0 2 0 3 3 0 3 2 ...
output:
2 1 3 1 2 3 2 2 1 1 0 0 0 0 0 6 0 0 0 0 3 1 1 4 4 4 4 4 1 0 0 1 2 3 4 6 1 1 1 2 2 4 4 4 4 4 0 0 0 4 2 6 2 8 4 5 2 2 2 4 4 4 4 4 4 4 1 2 3 4 2 3 7 8 9 7 3 3 1 1 3 2 1 4 1 2 0 0 5 6 0 1
result:
ok 10 lines
Test #4:
score: 10
Accepted
time: 22ms
memory: 37576kb
input:
5 1 100 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 3...
output:
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 0 1 2 2 ...
result:
ok 10 lines
Test #5:
score: 0
Wrong Answer
time: 18ms
memory: 36632kb
input:
5 1 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 ...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
wrong answer 7th lines differ - expected: '2 2 1 1 1 1 1 1 1 1 1 1 1 3 1 ...1 11 11 11 11 11 11 11 11 11 11', found: '2 2 1 1 1 1 1 1 1 1 1 1 1 3 1 ...1 11 11 11 11 11 11 11 11 11 11'
Test #6:
score: 10
Accepted
time: 52ms
memory: 38096kb
input:
5 1 200 200 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
output:
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 101 102 ...
result:
ok 10 lines
Test #7:
score: 0
Wrong Answer
time: 55ms
memory: 38048kb
input:
5 1 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 ...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
wrong answer 7th lines differ - expected: '1 1 1 1 1 1 1 2 1 1 3 1 1 1 1 ...5 15 15 15 15 15 15 15 15 15 15', found: '1 1 1 1 1 1 1 2 1 1 3 1 1 1 1 ...5 15 15 15 15 15 15 15 15 15 15'
Test #8:
score: 0
Wrong Answer
time: 24ms
memory: 36760kb
input:
5 10 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100...
output:
66 24 33 43 52 68 38 70 16 48 90 88 3 43 7 20 79 39 81 48 18 63 30 6 5 72 68 30 23 20 73 26 44 6 72 54 40 33 28 2 91 52 14 25 79 82 45 83 6 48 13 55 89 9 34 74 9 26 40 75 57 88 6 62 39 14 44 82 64 83 25 56 24 72 4 16 45 33 54 79 37 68 86 47 73 80 28 56 89 3 54 60 84 38 58 63 42 10 59 56 1 0 0 0 5 0 ...
result:
wrong answer 7th lines differ - expected: '2 2 4 1 3 1 1 4 2 1 1 2 3 2 2 ...0 10 10 10 10 10 10 10 10 10 10', found: '2 2 4 1 3 1 1 4 2 1 1 2 3 2 2 ...0 10 10 10 10 10 10 10 10 10 10'
Test #9:
score: 10
Accepted
time: 88ms
memory: 38360kb
input:
5 10 200 200 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
121 168 40 167 21 32 79 158 70 14 49 71 69 143 46 80 17 50 5 144 136 70 160 123 112 136 20 46 54 7 47 67 53 184 148 65 39 115 63 46 91 51 6 178 180 138 168 169 132 157 130 178 151 163 144 18 185 137 56 42 30 74 94 111 41 115 114 31 13 186 110 82 61 9 141 58 117 154 78 139 154 76 152 138 184 189 48 1...
result:
ok 10 lines
Test #10:
score: 0
Wrong Answer
time: 94ms
memory: 38280kb
input:
5 10 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200 200...
output:
74 73 14 171 36 16 175 90 116 29 66 56 61 52 15 121 65 134 181 67 169 6 89 165 60 16 128 118 150 1 43 55 35 87 114 53 38 67 153 50 62 43 120 181 50 55 23 3 17 173 46 36 4 13 54 171 29 109 95 40 93 138 22 156 130 70 175 62 11 137 120 164 61 100 3 19 134 13 16 178 35 124 156 108 145 131 91 133 106 109...
result:
wrong answer 7th lines differ - expected: '3 3 1 4 3 2 1 5 1 9 1 1 1 1 4 ...4 14 14 14 14 14 14 14 14 14 14', found: '3 3 1 4 3 2 1 5 1 9 1 1 1 1 4 ...4 14 14 14 14 14 14 14 14 14 14'