【DFS】特异功能(C++)

Description
Cici手下有N个小KID(1<=N<=1000),每个小KID都有若干种特异功能,这些功能从1开始编号,其总数不超过15 ,如
果小KID们所有的特异功能总类别数超过K的话,Cici管不住他们了。现在Cici当然不想让他们翻天覆地,所以只能
从N个小KID中选择一部分出来,他希望选的小KID的人数越多越好。

Input
第一行输入N,D,K
下面N行,用于描述这N个小KID的情况,格式如下:
先给出当前这个小KID所有的特异功能,然后再给些它们的编号分别是多少.

Output
如题

Sample Input

6 3 2
0
1 1
1 2
1 3
2 2 1
2 2 1

Sample Output

5
//Cici可以选择1, 2, 3, 5, 6这五个小KID,他们所拥有的特异功能总类数为2种,即第一种和第二种,没有超过K。

HINT












这道题的特异功能数量可以用二进制来表示,例如这个样例:

KID的序号 拥有的特异功能
1 1
2 2
3 3
4 2、1
5 2、1

其实这个样例每一个都可以化为二进制:
第一个:001
第二个:010
第三个:100
第四个:011
第五个:011
再一个个枚举,要让特异功能数量尽量等于K,那么就可以进行或运算,若或运算后,得出来的结果与原值相等,就加入这个KID。最终加出来的结果比之前最大值大,则替换最大值。

#include <bits/stdc++.h>
using namespace std;
int n,d,k,a[1001],s
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值