由题意,我们其实会发现

对于每一种果汁,其对应的状态只有可能有7种

VA​
VB​
VC​
VA+VB​
VA+VC​
VB+VC​
VA+VB+VC

   这道题就大大简化了

我们把所有果汁都读进来

每种状态取价格最小的(这才有可能最优)

(在这里我状压了一下,用二进制表示其种类)

之后爆搜即可

如果当前已满足(三种维生素都有了,答案就取min)

最后输出即可

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rii register int i
#define rij register int j
using namespace std;
int bj[],zt[],n;
long long ans=;
void dfs(int wz,long long an,int ztz)
{
if(ztz==)
{
ans=min(ans,an);
return;
}
for(rii=wz+;i<=;i++)
{
if(zt[i]!=)
{
dfs(i,an+zt[i],ztz|i);
}
}
}
int main()
{
scanf("%d\n",&n);
for(rii=;i<=;i++)
{
zt[i]=;
}
for(rii=;i<=n;i++)
{
bj[]=;
bj[]=;
bj[]=;
int ltt;
int ztz=;
scanf("%d ",&ltt);
char l=getchar();
while(l!=)
{
if(l=='A'&&bj[]==)
{
ztz|=;
bj[]=;
}
if(l=='B'&&bj[]==)
{
ztz|=;
bj[]=;
}
if(l=='C'&&bj[]==)
{
ztz|=;
bj[]=;
}
l=getchar();
}
zt[ztz]=min(zt[ztz],ltt);
}
dfs(,,);
if(ans>=)
{
cout<<"-1";
}
else
{
cout<<ans;
}
}

CF1042B 【Vitamins】(去重,状压搜索)的更多相关文章

  1. HDU 5025 (BFS+记忆化状压搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5025 题目大意: 迷宫中孙悟空救唐僧,可以走回头路.必须收集完钥匙,且必须按顺序收集.迷宫中还有蛇, ...

  2. 状压搜索 洛谷T47092 作业

    TYM 有 nn 本作业,编号为 1,\dots,n1,…,n. 由于 \mathrm{TYM}TYM 很喜欢偷懒,而且不喜欢消耗脑细胞,所以他选择跳着完成这 nn 本作业.此外,如果将做作业的顺序转 ...

  3. HDU 1429 (BFS+记忆化状压搜索)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1429 题目大意:最短时间内出迷宫,可以走回头路,迷宫内有不同的门,对应不同的钥匙. 解题思路: 要是 ...

  4. 洛谷 P3959 NOIP2017 宝藏 —— 状压搜索

    题目:https://www.luogu.org/problemnew/show/P3959 搜索: 不是记忆化,而是剪枝: 邻接矩阵存边即可,因为显然没有那么多边. 代码如下: #include&l ...

  5. poj1753 bfs+奇偶性减枝//状压搜索

    http://poj.org/problem?id=1753 题意:有个4*4的棋盘,上面摆着黑棋和白旗,b代表黑棋,w代表白棋,现在有一种操作,如果你想要改变某一个棋子的颜色,那么它周围(前后左右) ...

  6. 模拟赛20181016 Uva 1040 状压+搜索 2005 ACM world final problem c

    题目的隐含条件将这道题指向了最小生成树: 利用类似prim的方法,枚举所有子图并判断是否包含询问点,如果包含那么可以更新答案: 边统计边更新,且由于更新一定是向更多的点状态下更新,所以一定可以统计到答 ...

  7. 洛谷P4337 [ZJOI2018]线图(状压+搜索+乱搞)

    题面 传送门 题解 妈呀调了我整整一天-- 题解太长了不写了可以去看\(shadowice\)巨巨的 //minamoto #include<bits/stdc++.h> #define ...

  8. BZOJ 1195: [HNOI2006]最短母串 AC自动机+状压+搜索

    思路比较直接. 由于 $n$ 很小,直接定义 $f[i][j]$ 表示当前在自动机中的节点 $i,$ 被覆盖串的集合为 $j$ 的方案数. #include <bits/stdc++.h> ...

  9. hdu 2209 bfs+状压

    http://acm.hdu.edu.cn/showproblem.php?pid=2209 不知为啥有种直觉.会出状压+搜索的题,刷几道先 简单的BFS.状压表示牌的状态, //#pragma co ...

随机推荐

  1. pdf转为html查看pdf.js

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. socket programming

  3. Android 使用RecyclerView优雅实现悬浮标题通讯录

    项目地址:https://github.com/hgDendi/ContactsList 界面概览: ContactsListDemo ContactsListDemo2 概要 如图,主要简单划分为两 ...

  4. JavaScript基础入门知识

    JavaScript三种使用方式 JavaScript代码屏蔽 JavaScript内容显示的位置 JavaScript中的错误及解决方法 1.语法错误:通过控制台可以检查并解决. 2.逻辑错误:通过 ...

  5. 让CPU的占用率听你的指挥

    此题目具有很大的想象空间,尤其是多核环境下. 详见:http://hi.baidu.com/jeschou/item/53da6df6a8d25209d99e722d

  6. Catia 二次开发资料(转)

    Catia 二次开发 CATIA V5在开发之初就遵循面向对象的设计思想(OO),构建了完全基于组件的体系结构(PPR: Products,Process,Resource),有效地解决了维护.管理. ...

  7. Hadoop fs命令(转)

    最近使用hive做一些etl工作,除了日常sql的编写,了解hadoop及hive的一些底层原理性质的东西包括调优非常有必要,一次hive调优就把原来的零散文件做了合并.首先记下hadoop常用的命令 ...

  8. #学习笔记#e2e学习使用(二)

    前言: <#学习笔记#e2e学习使用(一)>主要记录了Vue项目的创建到e2e环境的搭建,以及期间遇到的各种问题和解决方法.本文建立在基础测试环境搭建完毕能正确运行的情况下,编写测试代码, ...

  9. 如何批量删除Redis数据库中的Key

    借助 Linux 的 xargs 指令来完成 redis-cli keys "*" | xargs redis-cli del //如果redis-cli没有设置成系统变量,需要指 ...

  10. SAP订单编排和流程增强概述

    SAP产品里的订单处理,无论是On-Premises解决方案还是云产品,我认为归根到底可以概括成四个字:订单编排,包含两个层次的内容: 1. 单个订单通过业务流程或者工作流驱动的状态迁移: 2. 多种 ...