首页 > 编程语言 >打卡信奥刷题(375)用C++信奥B3618[普及组/提高] 寻找团伙

打卡信奥刷题(375)用C++信奥B3618[普及组/提高] 寻找团伙

时间:2024-12-07 13:29:15浏览次数:7  
标签:B3618 信奥 16 28 31 30 样例 能力 打卡

寻找团伙

题目描述

世界局势风云变幻,你想办一件大事。办事自然要有人参与,你能从 n n n 个人里面挑选一部分人共襄盛举。

要办这件事,一共涉及 k k k 方面的能力,例如游说他人的能力、玩游戏的能力、睡觉的能力。每位人士都会具备某一些能力,例如机器猫就可能擅长睡觉、擅长玩游戏,而不擅长游说他人。

你的计划很宏伟,因此你希望团队拥有很全面的能力。不幸的是,如果团队中有偶数个人拥有同一类能力,那么他们就会分成两派,争执不下,导致整个团队丧失这方面的能力。相应地,如果这项能力只有奇数个人拥有,那么他们总能形成一个多数派,帮团队去做这方面的工作。

需要注意的是,团队拥有的每一项能力,对计划的成功率的贡献是不一样的。第一项能力最重要,它的权重是 2 k − 1 2^{k-1} 2k−1;第二项能力的权重是 2 k − 2 2^{k-2} 2k−2;依次类推。第 k k k 项能力最不重要,权重只有 1 1 1。

计划的成功率得分,即是团队拥有的所有能力对应的权重之和

你希望计划成功率最大。因此,你需要选出合适的人士,来参与到你的宏图伟业中。

输入格式

第一行,两个正整数 n , k n, k n,k。分别表示供你挑选的人的数量,以及能力的种类数。
接下来 n n n 行,每行表示每个人拥有的能力。这一行首先有一个整数 c c c,表示该人士拥有多少种能力;接下来是 c c c 个 [ 1 , k ] [1, k] [1,k] 之间的正整数,表示该人士拥有哪些能力。

输出格式

仅一行,一个整数,表示计划的成功率得分。

样例 #1

样例输入 #1

5 5
1 1
1 2
1 3
1 4
1 5

样例输出 #1

31

样例 #2

样例输入 #2

3 5
3 1 2 3
4 2 3 4 5
2 3 4

样例输出 #2

28

样例 #3

样例输入 #3

3 5
2 1 2
3 5 3 2
3 4 2 5

样例输出 #3

30

样例 #4

样例输入 #4

21 60
0 
0 
3 60 27 48
0 
1 48
2 52 14
2 4 31
0 
0 
2 28 43
2 6 31
0 
1 7
3 45 6 48
0 
1 51
0 
2 28 20
2 37 51
1 8
53 59 39 29 23 53 27 13 16 44 34 38 24 9 32 58 54 31 1 7 45 3 30 36 17 48 42 22 18 21 6 11 25 33 37 52 10 60 49 57 2 28 8 14 5 47 4 41 35 43 50 46 26 12

样例输出 #4

1152884121210322895

提示

样例解释

第一组样例,共 5 个人,每个人拥有的能力不一样。最终选择的结果是让这 5 个人都参与计划,得分 16 + 8 + 4 + 2 + 1 = 31 16+8+4+2+1 = 31 16+8+4+2+1=31。

第二组样例,我们选择只让 1 1 1 参与。那么团队具有能力 1 , 2 , 3 1,2, 3 1,2,3,得分 16 + 8 + 4 = 28 16+8+4=28 16+8+4=28。

第三组样例,我们让 1 , 2 , 3 1,2,3 1,2,3 参与。由于团队中有偶数个成员拥有能力 5 5 5,故团队并不拥有能力 5 5 5。奇数个成员拥有能力 2 2 2,故团队拥有能力 2 2 2。最终,团队具有能力 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4。得分 16 + 8 + 4 + 2 = 30 16+8+4+2=30 16+8+4+2=30。

数据规模与约定

对于 100 % 100\% 100% 的数据,有 n ≤ 21 , k ≤ 60 n\leq 21, k\leq 60 n≤21,k≤60。

C++实现

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ull p[30];
int n, k;
void input() {
cin >> n >> k;
for(int i=0; i<n; i++) {
int c, x;
cin >> c;
while(c–) {
cin >> x;
p[i] |= (1ULL << (k - x));
}
}
}
int choice[30];
ull ans;
void dfs(int pos) {
if(pos == n) {
ull res = 0;
for(int i=0; i<n; i++)
if(choice[i])
res ^= p[i];
ans = max(res, ans);
return;
}
choice[pos] = 0;
dfs(pos + 1);
choice[pos] = 1;
dfs(pos + 1);
}
void work() {
dfs(0);
cout << ans << endl;
}
int main() {
input();
work();
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

标签:B3618,信奥,16,28,31,30,样例,能力,打卡
From: https://blog.csdn.net/rogeliu/article/details/144269988

相关文章

  • 考研打卡(35)
    开局(35)开始时间 2024-12-04 20:24:50结束时间 2024-12-04 22:09:00今天去吃了铜锅涮肉数据结构一棵完全二叉树上有1001个节点,其中叶子节点的个数是______(北京工业大学2012年)A250B501C254D505B答案由二叉树性质知:n=n2+1,且完全二叉......
  • 打卡信奥刷题(360)用C++工具信奥P3353[普及组/提高] 在你窗外闪耀的星星
    在你窗外闪耀的星星题目背景飞逝的的时光不会模糊我对你的记忆。难以相信从我第一次见到你以来已经过去了3年。我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向后仰,柔和的晚霞照耀着你玫瑰色的脸颊。我明白,我已经沉醉于你了。之后,经过几个月......
  • 考研打卡(34)
    开局(34)开始时间 2024-12-03 22:36:03结束时间 2024-12-03 23:17:57为什么昨天没写,因为昨天想死,但我jio得不能每天都想死吧,所以今天该写了数据结构如果一棵二叉树的先序序列是…a…b…,中序序列是…b…a…,则_______(北京师范大学2015年)A节点a和节点b分别在某节点的左......
  • 考研打卡(33)
    开局(33)开始时间 2024-12-01 09:36:12结束时间 2024-12-01 10:27:50昨天快递是室友帮我取的数据结构带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中_______(扬州大学2013年)A第i行非∞的元素之和B第i列非∞的元素之和C第i行非∞且非0的元素之和D第i列非∞且......
  • 打卡信奥刷题(336)用C++工具信奥P2813[普及组/提高] 母舰
    母舰题目背景广东汕头聿怀初中Train#3Problem1(有没有红警既视感~)题目描述在小A的星际大战游戏中,一艘强力的母舰往往决定了一场战争的胜负。一艘母舰的攻击力是普通的MA(MobileArmor)无法比较的。对于一艘母舰而言,它是由若干个攻击系统和若干个防御系统组成的。两......
  • 考研打卡(32)
    开局(32)开始时间 2024-11-30 13:44:59结束时间 2024-11-30 15:18:42刚才去洗牙,体验了一波新事物嗷,挺新奇的,但是发现有个好大好大的蛀牙啊啊啊啊啊数据结构判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以用_____(中国石油大学2013年)A求关键路径的方法......
  • 考研打卡(31)
    开局(31)开始时间 2024-11-30 08:23:52结束时间 2024-11-30 09:24:35睡醒了。睡了六个小时睡不着了数据结构若一个有向图中的顶点不能排成一个拓扑序列,则可断定该有向图______(武汉科技大学2013年)A是个有根有向图B是个强连通图C含有多个入度为0的顶点D含有顶点......
  • CSP/信奥赛C++语法基础刷题训练(33):洛谷P1055:[NOIP2008 普及组] ISBN 号码
    CSP/信奥赛C++语法基础刷题训练(33):洛谷P1055:[NOIP2008普及组]ISBN号码题目描述每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括999位数字、......
  • CSP/信奥赛C++语法基础刷题训练(34):洛谷P2241:统计方形
    CSP/信奥赛C++语法基础刷题训练(34):洛谷P2241:统计方形题目背景1997年普及组第一题题目描述有一个n×mn\timesm......
  • 考研打卡(30)
    开局(30)开始时间 2024-11-29 08:23:23结束时间 2024-11-29 09:21:22今早醒来,打了十几个喷嚏,蹲了一分钟才发现是女厕所(还好没人)数据结构 有一个有序表R[1...13]={1,3,9,12,32,41,45,62,75,77,82,95,100},当用二分查找法查找值为82的节点时,经过______次比较后查找成功。(上海大学2......