#P13007. 【MX-X13-T2】「KDOI-12」不要去思考未来,把这留给未来的你。
【MX-X13-T2】「KDOI-12」不要去思考未来,把这留给未来的你。
题目背景
未来的你在打一场模拟赛。
题目描述
模拟赛中共有 道题,每道题有 个子任务和 个特殊性质。每个子任务均满足 个特殊性质的一个子集。
定义一组子任务依赖 表示子任务 依赖子任务 ,也就是只有通过了子任务 才能通过子任务 。
考虑到模拟赛有懒惰的出题人和愚蠢的在线法官,子任务依赖的条数必然是越少越好。现在你想知道最少配置多少组子任务依赖才能保证:
- 不存在一对子任务 使得满足子任务 的数据必然满足子任务 ,但是在不通过子任务 的情况下仍然有可能通过子任务 ;
- 不存在一对子任务 使得存在满足子任务 的数据不满足子任务 ,但是在不通过子任务 的情况下无法通过子任务 。
形式化地讲,设第 个子任务的特殊性质集合为 ,那么你要选择尽可能少的 二元组使得:
- 对于任意 满足 ,均存在 使得对于任意 ,存在 使得 ;
- 对于任意 不满足 ,均不存在 使得对于任意 ,存在 使得 。
并求出选择二元组数量的最小值。
输入格式
第一行,一个正整数 ,表示题目数量。对于每道题目:
- 第一行,两个正整数 ,表示子任务数量和特殊性质数量。
- 接下来 行,每行一个长度为 的
01
串。第 个子任务满足特殊性质 当且仅当第 行的字符串的第 个字符为1
。
保证不存在两个子任务满足的特殊性质相同。
输出格式
对于每道题目,一行,一个非负整数,表示子任务依赖数量的最小值。
3
4 2
00
01
10
11
5 4
1110
1100
1000
0001
0000
7 4
0101
1101
1001
0010
1110
0100
1000
4
4
7
提示
【样例解释】
对于第二道题目:不妨设四个特殊性质分别为 ,那么五个子任务分别符合特殊性质 、、、、和 。可以证明,配置以下子任务依赖符合要求且最优:
- ;
- ;
- ;
- 。
【数据范围】
测试点编号 | 特殊性质 | |
---|---|---|
无 | ||
A | ||
无 |
- 特殊性质 A:保证每个子任务最多满足两个特殊性质。
对于所有数据:,,输入的字符串由 0
和 1
组成,保证不存在两个子任务满足的特殊性质相同。