首页 > 其他分享 >P8687 [蓝桥杯 2019 省 A] 糖果

P8687 [蓝桥杯 2019 省 A] 糖果

时间:2024-04-05 14:23:07浏览次数:14  
标签:P8687 int 蓝桥 2019 糖果 dp

原题链接

题解

二进制表示每包糖果包含的味道,因为有一种拼接的感觉,然后背包dp,注意这里每个材料不止只能取一个

code

#include<bits/stdc++.h>
using namespace std;
int dp[1<<22]={0},candy[105]={0};

const int inf=2e9;

int main()
{
    int n,m,k;
    cin>>n>>m>>k;

    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            int x;
            cin>>x;
            candy[i]|=(1<<(x-1));
        }
    }

    int maxs=(1<<m)-1;
    for(int i=1;i<=maxs;i++) dp[i]=inf;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=maxs;j++) dp[j|candy[i]]=min(dp[j|candy[i]],dp[j]+1);
        //如果这里改成dp[j]=min(dp[j^candy[i]]+1,dp[j])就变成了每个材料只能取一个

    if(dp[maxs]==inf) puts("-1");
    else cout<<dp[maxs];
    return 0;
}

标签:P8687,int,蓝桥,2019,糖果,dp
From: https://www.cnblogs.com/pure4knowledge/p/18115713

相关文章

  • [蓝桥杯 2022 国 A] 环境治理(二分 + 弗洛伊德)
        通过题目描述,我们得知如果枚举所有的天数,就不会通过所有的样例,因此我们可以通过二分来列举符合要求的天数,并且我们知道两个城市之间衡量的灰尘度标准就是灰尘度总和最小的那一段路径,也就是说我们需要寻找到权值和最低的那条路径,而我们知道每两个点之间都有路径......
  • 【蓝桥杯选拔赛真题56】C++求位数 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编
    目录C++求位数一、题目要求1、编程实现2、输入输出二、算法分析三、程序编写四、程序说明五、运行结果六、考点分析七、推荐资料C++求位数第十四届蓝桥杯青少年创意编程大赛C++选拔赛真题一、题目要求1、编程实现给定一个正整数N(1<N<10^8),输出N为几位数2、......
  • PYTHON蓝桥杯——每日一练(简单题)
    题目查找整数给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(......
  • 蓝桥杯第十三届单片机省赛真题(IAP15F2K61S2)
    一、题目二、题目分析1、难点(笔者个人认为)(1)s17按键短按和长按的设置不同,界面不同s17短按在参数界面需要把温度参数-1;s17长按在时间界面需要显示分,秒界面;所以笔者这里把两个数码管显示分两个函数voidNixie_Show()//数码管显示函数{ Nixie_pos_num(1,16); Nixie_po......
  • 第十四届蓝桥杯单片机省赛真题
    逻辑部分纯手写简单零基础模板套用即可main.c#include"smg.h"#include"key.h"#include"led.h"#include"iic.h"#include"onewire.h"#include"ds1302.h"#include"timer.h"#include"uart.h"#i......
  • 2022蓝桥杯大赛软件类国赛真题 卡牌
    importjava.util.Scanner;publicclassMain{staticfinalintN=200005;staticlongn,m;staticint[]a=newint[N];staticint[]b=newint[N];publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in......
  • 第十四届蓝桥杯B组c/c++第五题接龙数列
    动态规划  接龙数列我打眼一看感觉得用栈stack,取出首位和末位全都入栈,每次弹出栈顶,获取此时的栈顶并弹出和下一个栈顶比较。整了老半天发现不行,原来是我脑子瓦特了。虽然没有用栈解决这道问题,但是,栈和队列都是非常重要的只是,不了解的同学们可以去学习一下,下面有传送门。......
  • vulhub中Apache Solr 远程命令执行漏洞复现(CVE-2019-0193)
    ApacheSolr是一个开源的搜索服务器。Solr使用Java语言开发,主要基于HTTP和ApacheLucene实现。此次漏洞出现在ApacheSolr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataC......
  • 蓝桥杯算法题:开心
    https://www.lanqiao.cn/problems/3824/learningeg:n=1234,k=2可以简单的列出这些选项:●1+2+34●1+23+4●12+3+4利用DFS和回溯的思想,程序推导如下:将n分成左右两部分,l表示left左侧的值,r表示right右侧的值。先将l加入res,再将r作为新的n......
  • 蓝桥杯填九宫幻方
    通过回溯算法对未输入得数字进行全排列后,依次填入格子,判断是否符合条件。可以更改幻方的大小,来填充任意幻方#include<stdio.h>#include<stdlib.h>#include<stdbool.h>intboard[3][3];//保存输入的幻方intans[3][3][3];//填充后符合条件的幻方inttmp[3][3];//幻方......