• CF1042B 【Vitamins】(去重,状压搜索)


    由题意,我们其实会发现

    对于每一种果汁,其对应的状态只有可能有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[1005],zt[150],n;
    long long ans=2147483647;
    void dfs(int wz,long long an,int ztz)
    {
        if(ztz==7)
        {
            ans=min(ans,an);
            return;
        }
        for(rii=wz+1;i<=7;i++)
        {
            if(zt[i]!=2147483647)
            {
                dfs(i,an+zt[i],ztz|i);
            }
        }
    }
    int main()
    {
        scanf("%d
    ",&n);
        for(rii=1;i<=149;i++)
        {
            zt[i]=2147483647;
        }
        for(rii=1;i<=n;i++)
        {
            bj[1]=0;
            bj[2]=0;
            bj[3]=0;
            int ltt;
            int ztz=0;
            scanf("%d ",&ltt);
            char l=getchar();
            while(l!=10)
            {
                if(l=='A'&&bj[1]==0)
                {
                    ztz|=1;
                    bj[1]=1;
                }
                if(l=='B'&&bj[2]==0)
                {
                    ztz|=2;
                    bj[2]=1;
                }
                if(l=='C'&&bj[3]==0)
                {
                    ztz|=4;
                    bj[3]=1;
                }
                l=getchar();
            }
            zt[ztz]=min(zt[ztz],ltt);
        }
        dfs(0,0,0);
        if(ans>=2147483647)
        {
            cout<<"-1";
        }
        else
        {
            cout<<ans;
        }
    }
  • 相关阅读:
    POI数据类型转换
    RSA加密解密——绕过OpenSSL
    STS热部署,springboot项目中修改代码不用重新启动服务
    List || Lists
    java解析复杂json数据
    Sublime Text 3 全程详细图文原创教程
    SpringBoot外调的几种方式 || http、https配置
    JPA对原生SQL的支持
    基于UDP协议的网络编程
    基于TCP协议的网络编程
  • 原文地址:https://www.cnblogs.com/ztz11/p/9669955.html
Copyright © 2020-2023  润新知