当前位置: 首页 > news >正文

状压dp-基础题目1(糖果)

基础题目1

解题思路

这题的数据规模:1≤N≤100,1≤M≤20,1≤K≤20,1≤Ti≤M。可以把M种口味用二进制表示,比如,M=5时,s=00001表示选了第1种口味,第2-5种口味没选。我们可以定义dp数组,dp[s]表示选了口味集合s(二进制编码转成整数)需要的最少糖果包数。定义数组tt为n包糖每包糖的口味集合(二进制编码转十进制整数)。

初始化

一开始,初始化所有dp数组元素为0x3f3f3f3f。之后设置dp[0]=0,对输入的N包糖的口味做移位和或运算,比如样例的第一包,口味为1,1,2,tt[1]=(00011)b,(00011)b=(3)d,所以dp[3]=1;第二包,口味为1,2,3,tt[2]=(00111)b,(00111)b=(7)d,所以dp[7]=1;后面第3至6包糖也是这样表示。

状态转移

外层循环遍历n包糖(循环变量为i),内层循环遍历所有二进制组合,循环变量j从0遍历到(1<<m)-1。我们先看一下口味集合j是否可以实现,即判断dp[j]是否小于0x3f3f3f3f,如果是,把第i颗糖加入j集合,形成新集合j|t[i]。dp[j|t[i]=min(dp[j|t[i],dp[j]+1)。

输出答案

如果dp[(1<<m)-1]<0x3f3f3f,输出答案dp[(1<<m)-1];否则输出-1(无法凑出所有口味)

AC代码
#include<bits/stdc++.h>usingnamespacestd;intn,m,k,tt[110],dp[1<<22],t[110][25];intmain(){cin>>n>>m>>k;memset(dp,0x3f,sizeof(dp));dp[0]=0;for(inti=1;i<=n;i++){ints=0;for(intj=1;j<=k;j++){cin>>t[i][j];s=(s|(1<<(t[i][j]-1)));}tt[i]=s;dp[s]=1;}for(inti=1;i<=n;i++){for(intj=0;j<(1<<m);j++){if(dp[j]<0x3f3f3f3f){dp[j|tt[i]]=min(dp[j|tt[i]],dp[j]+1);}}}if(dp[(1<<m)-1]<0x3f3f3f3f)cout<<dp[(1<<m)-1];elsecout<<-1;return0;}
http://www.jsqmd.com/news/1142960/

相关文章:

  • 想入手高性价比防水轨道插座?这几家靠谱生产企业值得你优先了解
  • 2026毕节黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐
  • 2026图片抠图边缘残留解决全指南,多工具精细处理实操方法
  • # 软考软件设计师每日一练 — 2026-07-06
  • 终极音乐分离神器:BS-RoFormer完整指南,让AI帮你轻松提取人声和乐器
  • Paws调度器原理解析:智能资源分配背后的算法与实现
  • 质量管理 15 个基本原理
  • 让经典游戏在现代Windows上重获新生:dxwrapper的魔法指南
  • ppt模板_0146_客户服务
  • 杰理RX端的两发一收话筒模式自行配置增加IIS 同时输出功能 卡顿问题【篇】
  • 龍魂资本愛之审计协议 CLAP v1.0 启动宣言
  • Docker 极速部署 Unione Cloud,搭建企业 OA 费用报销全流程审批系统
  • kml_adapter LAPACK适配器详解:构建完整KLAPACK库的完整教程
  • 2026无水印免费抠图工具完整指南:网页、PC、APP,多端实操教程
  • 【金蝶云星空】直运采购(无库存)全流程讲解
  • WebToEpub:一键将网页小说转换为EPUB电子书的终极解决方案
  • XSSFuzz框架从零配置到实战:轻量级XSS漏洞自动化挖掘指南
  • 淘宝taobao.item.get商品实时接口:更新商品信息与数据
  • 硅胶二次加工:印刷、粘接、组装的全流程
  • Apple OpenELM:苹果开源端侧大模型,隐私AI时代真的要来了
  • Android 开发问题:ClickableSpan 的点击事件没有生效
  • Apollo 9.0 激光雷达标定实战:基于Dreamview的5步动态标定流程
  • 028-舞蹈训练的刻意练习
  • ppt模板_0147_积雪电杆
  • 让 AI 真正参与数据库设计:EZDML MCP,把一句需求变成可审查的数据模型
  • 15个神级Skills,让你的编程效率直接翻倍!
  • Avalonia MarkupExtension(二)
  • 卡梅德生物科普CD160(糖蛋白)的生物学奥秘
  • openEuler/ci-bot自动化流程实战:从代码提交到构建部署的完整路径
  • 【5】大模型应用落地实战