P8687 [蓝桥杯 2019 省 A] 糖果

一、题目描述

P8687 [蓝桥杯 2019 省 A] 糖果

二、问题简析

由题意,糖果的种类 M M M 最多为 20 20 20,所以我们可以采用二进制位的方式来表示每包糖果的组成。具体:二进制的第 i i i 位表示第 i + 1 i + 1 i+1 种糖果, 1 1 1 表示有, 0 0 0 表示无。通过这种表示方式,一包糖果的状态(组成)可以用一个十进制数字表示。所有的状态为 [ 0 , 1 <<  M ) [0,1~\text{<<}~M) [0,1 << M)

a i = a_i= ai= i i i 包糖果的状态,即糖果组成(一个十进制数字) 0 < i < N 0<i<N 0<i<N。设 d p j = dp_j= dpj= 状态 j j j 需要糖果包数的最小值 0 < j < ( 1 <<  M ) 0<j<(1~\text{<<}~M) 0<j<(1 << M)
j < ( 1 <<  M ) − 1 j<(1~\text{<<}~M)-1 j<(1 << M)1,即 j j j 还没有包含所有糖果种类( j j j 必须是一个合法的状态,即可以由 a i ai ai 构成),则需要从 a i a_i ai 中挑选一包糖果加入 j j j,该过程可以描述为 j ∣ a i j~|~a_i j  ai。因为 j ∣ a i j~|~a_i j  ai j j j 转移而来,所以糖果包数为 d p j ∣ a i = m i n ( d p j ∣ a i , d p j + 1 ) dp_{j~|~a_i}=min(dp_{j~|~a_i}, dp_j+1) dpj  ai=min(dpj  ai,dpj+1)

注:

  • 1、本题中,将 d p j dp_j dpj (除 d p 0 dp_0 dp0)都初始化为一个较大的数,表示状态不合法。 d p 0 = 0 dp_0=0 dp0=0,因为 0 0 0 不需要任何糖果。
  • 2、最终结果检查 d p ( 1 <<  M ) − 1 dp_{(1~\text{<<}~M)-1} dp(1 << M)1,若等于较大的初始值,表示不能满足要求;否则,就是所求。

三、AC代码

#include <bits/stdc++.h>using namespace std;
typedef long long ll;int quickin(void)
{int ret = 0;bool flag = false;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')    flag = true;ch = getchar();}while (ch >= '0' && ch <= '9' && ch != EOF){ret = ret * 10 + ch - '0';ch = getchar();}if (flag)    ret = -ret;return ret;
}const int INF = 1e8;
int N, M, K, dp[1 << 20], A[103];int main()
{#ifdef LOCALfreopen("test.in", "r", stdin);#endifcin >> N >> M >> K;for (int i = 0; i < N; i++){for (int j = 0; j < K; j++){int a;cin >> a;A[i] |= 1 << (a - 1);}}fill(dp, dp + (1 << M), INF);dp[0] = 0;for (int i = 0; i < N; i++){for (int j = 0; j < 1 << M; j++){if (dp[j] == INF)    continue;dp[j | A[i]] = min(dp[j | A[i]], dp[j] + 1);}}if (dp[(1 << M) - 1] == INF)cout << -1 << endl;elsecout << dp[(1 << M) - 1] << endl;return 0;
}

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

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

相关文章

Spark SQL DataFrame

Spark SQL DataFrame DataFrame是一个分布式数据集合&#xff0c;它被组织成命名列。从概念上讲&#xff0c;它相当于具有良好优化技术的关系表。 DataFrame可以从不同来源的数组构造&#xff0c;例如Hive表&#xff0c;结构化数据文件&#xff0c;外部数据库或现有RDD。这个…

小程序富文本图片宽度自适应

解决这个问题 创建一个util.js文件,图片的最大宽度设置为100%就行了 function formatRichText(html) {let newContent html.replace(/\<img/gi, <img style"max-width:100%;height:auto;display:block;");return newContent; }module.exports {formatRichT…

vue2创建项目(自用,初学)

vue2创建项目(自用&#xff0c;初学) 创建项目 1.在文件资源管理器中&#xff0c;选择想建立文件夹的目录&#xff0c;输入cmd指令 vue create 项目名2.初学练习选择最后一项 3.按空格进行勾选&#xff0c;回车下一步 4.因为是vue2&#xff0c;所以选2.x 5.选y 6.选Less 7.选…

canvas跟随鼠标画有透明度的椭圆边框

提示&#xff1a;canvas跟随鼠标画有透明度的椭圆边框 文章目录 前言一、跟随鼠标画有透明度的椭圆边框总结 前言 一、跟随鼠标画有透明度的椭圆边框 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8">&…

论文阅读-《Lite Pose: Efficient Architecture Design for 2D Human Pose Estimation》

摘要 这篇论文主要研究了2D人体姿态估计的高效架构设计。姿态估计在以人为中心的视觉应用中发挥着关键作用&#xff0c;但由于基于HRNet的先进姿态估计模型计算成本高昂&#xff08;每帧超过150 GMACs&#xff09;&#xff0c;难以在资源受限的边缘设备上部署。因此&#xff0…

html和ashx之间的传值以及js和aspx传值

html 代码 var content window.location.href; var ori content.split(?) console.log(ori[1]) GetJsonByUrl2("getData_stock2.ashx?workline" ori[1], get_html); $.ajax({ type: "post", url: "Handler1.ashx", …

大数据入门(一)

大数据主要要解决&#xff1a;海量数据的采集&#xff0c;存储&#xff0c;分析计算问题。 大数据的特点&#xff1a;大量&#xff08;数据量大&#xff09;&#xff0c;高速&#xff08;数据量的累积越来越快&#xff09;&#xff0c;多样&#xff08;结构化数据和非结构化数…

Intellij IDEA构建Android开发环境

Intellij IDEA创建项目时没有Android的选项 进设置&#xff08;Intellij IDEA - Settings - Plugins &#xff09; 再次创建项目可以看到Android的选项 解决Android导入项目时Gradle下载速度慢/超时/失败

票据查重查漏问题

题目背景 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 题目描述 每张票据有唯一的 ID 号&#xff0c;全年所有票据的 ID 号是连续的&#xff0c;但 ID 的开始数码是随机选定的。因为工作人员疏忽&#xff0c;在录入 ID 号的时候发生了一处错误&#xff0c;造成了…

HCIP —— 多生成树 (MSTP)

MSTP --- Multiple Spanning Tree Protocol --- 802.1s 在 MSTP 中 &#xff0c;提出了实例的概念&#xff0c;相当于可用让多个VLAN同时属于一个实例&#xff0c;然后只需要一个实例生成一棵树。 --- 一种 VLAN 分流的思想 实例ID &#xff1a;instance ID 由 12位 二进制…

windows安装tomcat

安装之前需要安装jdk1.8可以参考windows安装jdk1.8-CSDN博客 一、下载tomcat Apache Tomcat - Apache Tomcat 8 Software Downloads 解压到D盘的D:\Program Files\tomcat目录下 二、配置环境变量 电脑右键属性-高级系统设置-高级-环境变量 1、在系统变量配置CATALINA_HOME环…

掌握ES6的箭头函数:深入了解其实用性与规则

引言 ES6&#xff08;ECMAScript 2015&#xff09;引入了箭头函数&#xff0c;这是一种新的函数声明方式&#xff0c;它改变了我们编写JavaScript代码的方式。箭头函数提供了更简洁、更直观的语法&#xff0c;并且具有一些独特的特性和行为。本文将深入探讨箭头函数的规则、用…

将word转为PDF的几种简单方式

第一种&#xff1a;使用spire.doc.jar包&#xff0c;用时7秒左右。 引入spire.doc-11.1.1.jar包&#xff0c;该包带水印&#xff0c;建议使用免费版的spire.doc.free-5.2.0.jar&#xff0c;免费版只能转三页。 package web.tools.excel; import com.spire.doc.*; public cl…

【分布式】——降级熔断限流

降级&熔断&限流 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点…

mysqldump 备份与恢复

1. mysqldump 简介 mysqldump 是 MySQL 提供的一个命令行工具&#xff0c;用于备份 MySQL 数据库的结构和数据。它能够生成一个包含 SQL 语句的文本文件&#xff0c;以便在需要时恢复数据库。 2. mysqldump 备份数据库 要备份一个或多个数据库&#xff0c;可以使用 mysqldum…

uniApp中使用小程序XR-Frame创建3D场景(2)加载模型

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用&#xff0c;只完成了简单的环境搭建&#xff0c;这篇文章讲解如何加载3D模型。 1 加入模型加载标签 在XR-Frame框架中&#xff0c;加载资源都是在wxml文件的标签中实现的。下面是wxml中完整的代码 index.wxml &l…

spark-submit 主要参数详细说明及Standalone集群最佳实践

文章目录 1. 前言2. 参数说明3. Standalone集群最佳实践 1. 前言 部署提交应用到 spark 集群&#xff0c;可能会用到 spark-submit 工具&#xff0c;鉴于网上的博客质量残差不齐&#xff0c;且有很多完全是无效且错误的配置&#xff0c;没有搞明白诸如--total-executor-cores …

Idea与Maven版本不一致问题

Idea拉取Jar包&#xff0c;报Unable to import maven project: See logs for details 查看日志信息No implementation for org.apache.maven.model.path.PathTranslator was bound 解决办法&#xff1a; IDEA执行Maven报错 Unable to import maven project: See logs for d…

PC电脑技巧[笔记本通过网线访问设备CMW500]

笔记本局域网访问设备 现在我有一台CMW500,我要用笔记本去访问它,但是我发现没有路由器就是不能够访问,通过网线连接设备就是ping不通: 这里设置TCP/IPv4的IP地址如下,这时候就可以pin通了:

论文篇05-论文范文-论数据访问层设计技术及其应用(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

试题:论数据访问层设计技术及其应用 在信息系统的开发与建设中,分层设计是一种常见的架构设计方法,区分层次的目的是为了实现“高内聚低耦合”的思想。分层设计能有效简化系统复杂性,使设计结构清晰,便于提高复用能力和产品维护能力。一种常见的层次划分模型是将信息系统分…