ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#207360 | #3748. 状压 1 | one_zero_four_zero | 100 | 873ms | 18220kb | C++11 | 1.4kb | 2024-07-28 18:19:17 | 2024-07-28 20:15:40 |
answer
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int T, n, m, ans = 114514;
int val[405][405];
int f[405], dp[(1 << 22) + 5];
int cnt[405];
void dfs(int k, int num){
if (k == n){
bool cur = 1;
for (int i = 0; i < m; i ++){
if (!cnt[i]) cur = 0;
}
if (cur) ans = min(ans, num);
return;
}
dfs(k + 1, num);
for (int i = 0; i < m; i ++){
cnt[i] += val[k][i];
}
dfs(k + 1, num + 1);
for (int i = 0; i < m; i ++){
cnt[i] -= val[k][i];
}
}
void solve1(){
memset(cnt, 0, sizeof(cnt));
dfs(0, 0);
printf("%d\n", ans);
}
void solve2(){
memset(f, 0, sizeof(f));
for (int i = 0; i < n; i ++){
for (int j = 0; j < m; j ++){
f[i] = (f[i] << 1) + val[i][j];
}
}
memset(dp, 0x3f, sizeof(dp));
dp[0] = 0;
for (int s = 0; s < (1 << m); s ++){
for (int i = 0; i < n; i ++){
dp[s] = min(dp[s], dp[s & (~f[i])] + 1);
// cout << s << " " << (s & (~f[i])) << " " << dp[s & (~f[i])] << " " << dp[s] << ";;\n";
}
}
printf("%d\n", dp[(1 << m) - 1]);
}
int main(){
#ifndef ONLINE_JUDGE
freopen("../data.in","r",stdin);
freopen("../data.out","w",stdout);
#endif
scanf("%d", &T);
while (T --){
ans = 114514;
memset(val, 0, sizeof(val));
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i ++){
for (int j = 0; j < m; j ++){
scanf("%d", &val[i][j]);
}
}
if (n <= 20) solve1();
else solve2();
}
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 5
Accepted
time: 0ms
memory: 1836kb
input:
10 10 40 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1...
output:
3 3 4 3 3 5 4 5 3 2
result:
ok 10 tokens
Test #2:
score: 5
Accepted
time: 2ms
memory: 1836kb
input:
10 10 40 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1...
output:
4 4 3 2 4 4 4 3 4 3
result:
ok 10 tokens
Test #3:
score: 5
Accepted
time: 2ms
memory: 1840kb
input:
10 10 40 1 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0...
output:
4 3 3 4 4 4 5 3 3 3
result:
ok 10 tokens
Test #4:
score: 5
Accepted
time: 0ms
memory: 1836kb
input:
10 10 40 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 1...
output:
4 3 3 4 4 2 3 3 2 3
result:
ok 10 tokens
Test #5:
score: 5
Accepted
time: 0ms
memory: 1836kb
input:
10 10 40 0 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0...
output:
4 4 2 3 4 3 3 3 4 3
result:
ok 10 tokens
Test #6:
score: 5
Accepted
time: 0ms
memory: 1836kb
input:
10 10 40 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0...
output:
3 3 3 4 3 5 3 3 3 4
result:
ok 10 tokens
Test #7:
score: 5
Accepted
time: 9ms
memory: 18216kb
input:
10 40 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0...
output:
5 4 4 4 3 4 5 3 8 5
result:
ok 10 tokens
Test #8:
score: 5
Accepted
time: 16ms
memory: 18220kb
input:
10 40 10 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
4 3 4 4 9 4 4 7 4 7
result:
ok 10 tokens
Test #9:
score: 5
Accepted
time: 14ms
memory: 18216kb
input:
10 40 10 0 0 1 1 0 0 0 0 0 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 1 0 0 1 0 0 0 0 0...
output:
4 5 6 4 8 4 4 5 7 7
result:
ok 10 tokens
Test #10:
score: 5
Accepted
time: 15ms
memory: 18216kb
input:
10 40 10 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
9 4 3 5 5 4 4 8 8 3
result:
ok 10 tokens
Test #11:
score: 5
Accepted
time: 20ms
memory: 18220kb
input:
10 40 10 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0...
output:
6 4 5 8 4 9 4 5 5 6
result:
ok 10 tokens
Test #12:
score: 5
Accepted
time: 17ms
memory: 18216kb
input:
10 40 10 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0...
output:
3 4 4 4 4 5 5 8 4 6
result:
ok 10 tokens
Test #13:
score: 5
Accepted
time: 34ms
memory: 18216kb
input:
10 26 15 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 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0...
output:
8 8 6 7 8 6 11 7 8 8
result:
ok 10 tokens
Test #14:
score: 5
Accepted
time: 31ms
memory: 18216kb
input:
10 26 15 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0...
output:
8 7 10 7 8 8 9 8 8 9
result:
ok 10 tokens
Test #15:
score: 5
Accepted
time: 237ms
memory: 18220kb
input:
10 21 19 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
8 4 5 3 3 8 11 3 12 3
result:
ok 10 tokens
Test #16:
score: 5
Accepted
time: 21ms
memory: 18220kb
input:
10 99 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
output:
4 4 3 4 3 4 3 4 2 4
result:
ok 10 tokens
Test #17:
score: 5
Accepted
time: 33ms
memory: 1840kb
input:
10 15 26 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0...
output:
6 5 5 7 7 5 10 10 7 11
result:
ok 10 tokens
Test #18:
score: 5
Accepted
time: 29ms
memory: 1840kb
input:
10 15 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1...
output:
13 9 4 10 5 4 7 5 5 5
result:
ok 10 tokens
Test #19:
score: 5
Accepted
time: 393ms
memory: 1840kb
input:
10 19 21 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
10 7 6 4 4 3 3 5 6 6
result:
ok 10 tokens
Test #20:
score: 5
Accepted
time: 0ms
memory: 1840kb
input:
10 4 99 1 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 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 ...
output:
2 2 2 2 2 2 2 2 2 2
result:
ok 10 tokens