蓝桥杯 2019 省A 糖果 动态规划/二进制


 

#include <bits/stdc++.h> // 包含标准库中的所有头文件
using namespace std;int main()
{int n,m,k; // 定义变量n(糖果包数)、m(口味数)、k(每包糖果的个数)cin>>n>>m>>k; // 输入n、m、k的值vector<int>dp(1<<m+1,100); // 定义动态规划数组dp,初始值为100,大小为2的(m+1)次方vector<int>v(1<<m+1,0); // 定义糖果口味数组v,初始值为0,大小为2的(m+1)次方for(int i=0;i<n;i++) // 遍历每一包糖果{int h=0,p;for(int j=1;j<=k;j++) // 遍历每包糖果中的每个口味{cin>>p; // 输入口味编号p-=1; // 将口味编号转换为数组索引(从0开始)h=h|(1<<p); // 将该口味对应的位标记为1,表示这个口味被买了}v[i]=h; // 将当前糖果的口味情况存入糖果口味数组中dp[h]=1; // 更新动态规划数组,表示只需要一包糖果就能满足这种口味需求}for(int i=0;i<(1<<m);i++) // 遍历所有可能的口味组合{for(int j=0;j<n;j++) // 遍历每一包糖果{dp[i|v[j]]=min(dp[i|v[j]],dp[i]+1); // 更新动态规划数组,尝试用当前口味组合i去购买第j包糖果,更新最小糖果包数}}if(dp[(1<<m)-1]==100) // 如果对应全口味的糖果包数为100,表示无法满足所有口味cout<<"-1"; // 输出-1elsecout<<dp[(1<<m)-1];  // 输出满足所有口味的最小糖果包数return 0; // 返回0,表示程序正常结束
}

思路分析:

  1. 首先,定义了两个数组:dp数组用于存储达到某种口味组合所需的最小糖果包数,v数组用于存储每包糖果的口味情况。

  2. 遍历每一包糖果,对每包糖果中的每个口味进行标记,使用位运算将口味转换为对应的位标记。

  3. 根据每包糖果的口味情况,更新dp数组,表示只需要一包糖果就能满足该口味需求。

  4. 遍历所有可能的口味组合,尝试用当前口味组合去购买每一包糖果,并更新最小糖果包数。

  5. 最后,如果对应全口味的糖果包数为100,表示无法满足所有口味,输出-1;否则输出满足所有口味的最小糖果包数。

注:

  • dp数组:dp[i] 表示达到口味组合 i 所需的最小糖果包数。这里口味组合指的是一个二进制数,每一位表示对应口味是否被包含,如果某一位为1,则表示对应的口味被买了,为0则表示没有买。例如,如果有三种口味(m=3),那么口味组合 5(二进制 101)表示第1种口味和第3种口味被买了,第2种口味没有被买。初始时,dp数组的值均为100,表示无法达到对应的口味组合。

  • v数组:v[i] 表示第 i 包糖果的口味情况。它也是一个二进制数,每一位表示对应的口味是否在这包糖果里,如果某一位为1,则表示这个口味在这包糖果里,为0则表示不在。同样以三种口味为例,如果第 i 包糖果的口味组合为 6(二进制 110),则表示第2种口味和第3种口味在这包糖果里,第1种口味不在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ninja使用教程【含官方文档翻译】

前言 ninja官方文档是英文版&#xff0c;查阅起来不方便&#xff0c;所以自制一版中文版本&#xff0c;方便快速查找 附带自己练习使用的demo代码&#xff0c;适合初学者入门练习&#xff0c;有不懂的关键字直接在此页面搜索 使用搜索快捷键&#xff1a;ctrlf 译自Ninja版本…

探索工业AI智能摄像机的卓越性能!

​ 在当今快速发展的工业智能化领域&#xff0c;上海晶珩的工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注&#xff08;文末有国外工程师的评测链接&#xff09;。搭载Raspberry Pi CM4支持的ED-AIC2000和ED-AIC2100系列旨在广泛应用&#xff0c;涵盖从简单的条…

C++ 检测文本文件编码格式

重点&#xff1a; 1.在线检查工具 在线文件编码识别- 在线工具 (bugscaner.com) 2.检查文章链接 C读取文本文件 ANSI,UNICODE,UTF-8 - 猴子你是猪吗 - 博客园 (cnblogs.com) 3.检查是否是UTF8格式 bool check_utf8_bom(const std::wstring& filename) {std::ifstream …

React之基础项目搭建

前言 React的生态系统非常庞大&#xff0c;拥有大量的第三方库和工具&#xff0c;如React Native&#xff08;用于构建原生移动应用&#xff09;、Next.js&#xff08;用于构建服务器渲染应用&#xff09;、Create React App&#xff08;用于快速搭建React应用的脚手架&#x…

OLAP与OLTP介绍

OLAP与OLTP介绍 在讨论OLAP和OLTP之前&#xff0c;我们需要了解它们的基本概念。OLAP&#xff08;在线分析处理&#xff09;和OLTP&#xff08;在线事务处理&#xff09;是数据处理的两种不同方法。它们针对不同类型的数据库工作负载进行了优化&#xff0c;适用于不同的业务需…

工业数据采集平台:从起源到崛起的辉煌历程

关键词&#xff1a;工业数据采集平台, 工业数据采集, 工业数据采集分析,智能化 在当今数字化的时代&#xff0c;工业领域也在经历着深刻的变革。而工业数据采集平台的发展历程&#xff0c;正是这场变革中的重要篇章。 回首过去&#xff0c;工业数据采集曾是一个繁琐而复杂的过…

整数划分(计数类dp)-java

整数划分我们主要通过两种思路来对这道题就行解决。 文章目录 前言 一、整数划分 二、模拟完全背包 三.代码如下 1.代码如下 2.测试样例 3.代码运行结果 四、计数类dp 4.1算法思路 4.2代码如下 总结 前言 整数划分我们主要通过两种思路来对这道题就行解决。 提示&#xff1a;以…

【数据库(MySQL)基础】以MySQL为例的数据库基础

文章目录 0. 本文用到的emp表,dept表,salgrade表1. MySQL入门2. 简单查询3. 字段计算4. 条件查询4.1 and4.2 null4.3 or4.4 and和or的优先级4.4 in 和 not in4.5 模糊查询 5. 排序5.1 简单排序5.2 两个字段排序5.3 综合排序 6. 一些常用函数6.1 大小写转换6.2 substr子字符串6.…

数据库系统工程师考试大纲

数据库系统工程师考试大纲主要包括以下几个方面的考试要求&#xff1a; 1.掌握计算机体系结构以及各主要部件的性能和基本工作原理。 2.掌握操作系统、程序设计语言的基础知识&#xff0c;了解编译程序的基本概念。 3.熟练掌握常用数据结构和常用算法。 4.熟悉软件工程和软件开…

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView&#xff0c;它是一个纯输出的控件&#xff1b;而 EditText 在 TextView 基础之上加入了简单的输入功能&#xff1b;今天要讲的 Button 是一个和用户互动感很强的控件&#xff0c;从今往后不再是单纯的文本展示&#xff0c;我们可以通过 TextView、…

蒙德冒险者的游戏

描述 蒙德城的一群冒险者计划进行一场特殊的表演以庆祝风神节。这场表演涉及到一项特别的挑战&#xff0c;即“冒险者塔”——一项测试冒险者们团队协作和个人承受能力的活动。 在“冒险者塔”表演中&#xff0c;参与者需要站在彼此的肩膀上&#xff0c;形成一个人类塔&#…

智能汽车领域检测实验室数智化转型

随着汽车制造行业自主研发能力的提高&#xff0c;当前的汽车企业实验室不仅需要进行种类繁多的试验项目&#xff0c;同时还需要将试验过程中的试验结果、试验过程、报告文档等一系列重要数据进行统一管理。为了提升实验数据的安全性及应用性&#xff0c;青软青之通过软硬件结合…

快速下载huggingface资源 (cli使用)

因为墙的原因&#xff0c;huggingface上的资源难以下载&#xff0c;通过本博客的方法不需翻墙也能快速下载。 本博客主要介绍&#xff1a; 1. 如何离线下载huggingface 资源 2. huggingface cli 的简单使用 安装 pip install -U "huggingface_hub[cli]" 配置 #…

for in 和 for of 的区别

1.for in 和 for of 都可以循环数组&#xff0c;for in 输出的是数组的 index 下标&#xff0c;而 for of 输出的是数组的每一项的值。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport…

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

动态规划在电商订单计算的例子

你在网上买了一堆商品,比如说,你买了2件T恤,每件10块,5件袜子,每双5块,还有1个帽子,8块钱。但是呢,商家有个促销活动,买得越多,单价就越便宜。比如,T恤买3件以上,每件就变成9块了。这时候,怎么算出你这一单的最少花费呢? 商品价格可能会因为购买数量的不同而有所…

重看Spring聚焦ApplicationContext分析

一、理解下ApplicationContext的设计 &#xff08;一&#xff09;功能性的理解 ApplicationContext 提供了一个轻量级、灵活、可扩展的容器&#xff0c;能帮助我们更加轻松地构建和管理复杂的应用程序&#xff0c;其通过依赖注入和控制反转等技术&#xff0c;降低了组件之间的…

SpringBoot 多数据源与事务管理:一站式解决方案

大纲 引言 在当今的软件开发中&#xff0c;随着业务的不断扩展和复杂化&#xff0c;许多应用程序都不再局限于单一的数据库&#xff0c;而是需要同时操作多个数据源以满足各种需求。SpringBoot作为一种快速开发框架&#xff0c;在处理单数据源的情况下表现出色&#xff0c;但…

【算法】统计英文字母出现的频率

题目 字母出现频率是指26英文个字母在文章中出现的频率。根据统计&#xff0c;在英语中最常出现的字母是e&#xff0c;大约占12~13%&#xff0c;出现最少的字母是z&#xff0c;不到0.1% &#xff0c;如下图所示&#xff08;统计结果来自wiki百科&#xff09; 字母出现频率的统…

三方库移植之NAPI开发(三)通过IDE开发NAPI工程

在三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI一文中&#xff0c;笔者开发的是一个rom包的napi工程。该工程需要编译烧录固件&#xff0c;C 的动态库会集成到开发板的ROM中。在本篇文章中&#xff0c;笔者使用三方库移植之NAPI开发[1]—Hello OpenHarmony NAPI中一样的he…