VOJ 幼儿园买玩具 题解 二进制枚举

2024-04-20 01:04

本文主要是介绍VOJ 幼儿园买玩具 题解 二进制枚举,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

幼儿园买玩具

在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n, m, k;cin >> n >> m >> k;vector<vector<int>> v(n + 1);for (int i = 1; i <= n; i++){int num; // 该小朋友想玩的玩具数量cin >> num;int temp; // 玩具编号for (int j = 0; j < num; j++){cin >> temp;v[i].push_back(temp);}}if (m >= k){cout << n;return 0;}int ans = 0;for (int i = 0; i < (1 << k); ++i) // 二进制枚举所有玩具选择情况{int is[16] = {0}; // 记录该二进制状态下选择的玩具编号int cnt = 0;      // 该二进制状态下选择买的玩具的数量for (int j = 0; j < k; j++){if (i & (1 << j))is[j + 1] = 1, cnt++;}if (cnt == m) // 根据贪心,尽可能多的买玩具能满足更多小朋友的需求,所以只需考虑cnt==m的情况{int temp = 0; // 当前选择方案能满足小朋友需求的数量for (int k = 1; k <= n; k++){bool ok = 1; // 判断是否满足该小朋友的需求int num = v[k].size();for (int s = 0; s < num; s++){if (is[v[k][s]] == 0){ok = 0;break;}}if (ok)temp++;}ans = max(temp, ans); // 维护ans为最大值}}cout << ans;return 0;
}

这篇关于VOJ 幼儿园买玩具 题解 二进制枚举的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918908

相关文章

二进制文件转化成文本文件

文章中如果有写错、表述不明、有疑问或者需要扩展的知识,欢迎留言或者私信~   1.区别 如果一个文件说是文本文件,使用任何一种文本编辑器打开可以展现出人类可读信息字符,因为编码都符合某种编码方式,如ASCII、UTF8、GB2312等等(在文件头可以读出来是什么编码方式,然后文本编辑器再按照规则去读取翻译成对应的字符,展示给我们的就是可读的了)。(关于编码方式不了解可以看这一篇) 如果一

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

LeetCode11. 盛最多水的容器题解

LeetCode11. 盛最多水的容器题解 题目链接: https://leetcode.cn/problems/container-with-most-water 示例 思路 暴力解法 定住一个柱子不动,然后用其他柱子与其围住面积,取最大值。 代码如下: public int maxArea1(int[] height) {int n = height.length;int

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统,而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备,并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线的 子设备。 标识和报告子设备的过程称为 总线枚举。 在总线枚举期间,总线驱动程序会为其子 设备创建设备对象 。  总线驱动程序本质上是同时处理总线枚

LeetCode:经典题之141、142 题解及延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 142.环型链表 目录 系列目录141. 环形链表常量因子 1

C语言 | Leetcode C语言题解之第188题买卖股票的最佳时机IV

题目: 题解: int maxProfit(int k, int* prices, int pricesSize) {int n = pricesSize;if (n == 0) {return 0;}k = fmin(k, n / 2);int buy[k + 1], sell[k + 1];memset(buy, 0, sizeof(buy));memset(sell, 0, size

6月21日训练 (东北林业大学)(个人题解)

前言:   这次训练是大一大二一起参加的训练,总体来说难度是有的,我和队友在比赛时间内就写出了四道题,之后陆陆续续又补了了三道题,还有一道题看了学长题解后感觉有点超出我的能力范围了,就留给以后的自己吧。话不多说,上正文。 正文:   Problem:A 幸运数字: #include <bits/stdc++.h>using namespace std;int sum,ans;in

剑指Offer—编程题10(二进制中1 的个数)

代码如下,请在JDK7及以上版本运行: public class Test10 {/*** 请实现一个函数, 输入一个整数,输出该数二进制表示中1的个数。* 例如把9表示成二进制是1001 ,有2位是1. 因此如果输入9,该出2。** @param n 待的数字* @return 数字中二进制表表的1的数目*/public static int numberOfOne(int

LeetCode:经典题之389 题解与延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 142.环型链表 目录 系列目录389.找不同哈希表

Google Code Jam 2014(附官方题解)

2014年Google编程挑战赛 Problem A. Magic Trick Confused? Read the quick-start guide. Small input 6 points You have solved this input set. Note: To advance to the next rounds, you will need to s