zoukankan      html  css  js  c++  java
  • 洛谷 P1460 健康的荷斯坦奶牛 Healthy Holsteins

    题目描述

    农民JOHN以拥有世界上最健康的奶牛为傲。他知道每种饲料中所包含的牛所需的最低的维他命量是多少。请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少。

    给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少。

    维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解。

    输入输出格式

    输入格式:

     

    第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数。

    第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种维他命的最小量。

    第3行:一个整数G(1<=G<=15),表示可用来喂牛的饲料的种数。

    下面G行,第n行表示编号为n饲料包含的各种维他命的量的多少。

     

    输出格式:

     

    输出文件只有一行,包括

    牛必需的最小的饲料种数P

    后面有P个数,表示所选择的饲料编号(按从小到大排列)。

    如果有多个解,输出饲料序号最小的(即字典序最小)。

     

    输入输出样例

    输入样例#1: 复制
    4
    100 200 300 400
    3
    50  50  50  50
    200 300 200 300
    900 150 389 399
    输出样例#1: 复制
    2 1 3
    

    说明

    USACO 2.1

    翻译来自NOCOW

    思路:搜索。

    #include<queue>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int v,g;
    struct nond{
        int f[30];
    }vv[20];
    int num[30],pos[30];
    int ans[30],vis[30];
    int judge(){
        for(int i=1;i<=v;i++)
            if(pos[i]<num[i])    return false;
        return true;
    }
    void dfs(int tot,int sum,int pre){
        if(sum==tot){
            if(judge()){
                cout<<tot<<" ";
                for(int i=1;i<=tot;i++)    cout<<ans[i]<<" ";
                exit(0);
            }
            return ;
        }
        for(int i=pre+1;i<=g;i++)
            if(!vis[i]){
                vis[i]=1;
                ans[sum+1]=i;
                for(int j=1;j<=v;j++)    pos[j]+=vv[i].f[j];
                dfs(tot,sum+1,i);
                for(int j=1;j<=v;j++)    pos[j]-=vv[i].f[j];
                vis[i]=0;
            }
    }
    int main(){
        scanf("%d",&v);
        for(int i=1;i<=v;i++)    scanf("%d",&num[i]);
        scanf("%d",&g);
        for(int i=1;i<=g;i++)
            for(int j=1;j<=v;j++)
                scanf("%d",&vv[i].f[j]);
        for(int i=1;i<=g;i++){
            memset(vis,0,sizeof(vis));
            memset(pos,0,sizeof(pos));
            dfs(i,0,0);
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    java的final变量理解
    springMVC如何判断入参是默认参数还是请求传过来的参数?
    java反射新的应用
    冒烟测试和回归测试的区别
    git变基、冲突解决
    mockServer学习
    mongodb查询之模糊查询
    springxml配置构造函数入参
    mockito学习
    solr官方文档翻译系列之schema.xml配置介绍
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/8000778.html
Copyright © 2011-2022 走看看