P1460 健康的荷斯坦奶牛 Healthy(DFS)

思路:这道题还是用了小小的剪枝,这里要注意的是该题有很多中构建树的顺序,但是,在这众多顺序中不一定都能保证输出的方案字典序最小。

构建搜索树:如图构建

     

剪枝,emmm,看代码:

#include<iostream>
using namespace std;
int a[20][30];
int b[30], an[30], mm[20], gg[20];
int n, m, mins=1000, kk;
bool f(){
    for (int i = 1; i <= m;++i)
    if (b[i] > an[i])return 0;
    return 1;
}
void add_of_s(int s, int y){
    for (int i = 1; i <= m; ++i)
        an[i] = an[i] + y*a[s][i];
}

void dfs(int s, int k){
    if (k > n){ return; }
    if (kk >= mins){ return; }    //剪枝
    if (f()){  mins = kk; for (int i = 1; i <= mins; ++i)gg[i] = mm[i]; }
    for (int i = s+1; i <= n;++i)
    {
        kk++;    mm[kk] = i;
        add_of_s(i, 1);
        dfs(i , k + 1);
        mm[kk] = 0; kk--;
        add_of_s(i, -1);
    }
}

int main(){
    cin >> m;
    for (int i = 1; i <= m; ++i)cin >> b[i];
    cin >> n;
    for (int i = 1; i <= n;++i)
    for (int j = 1; j <= m; ++j)
        cin >> a[i][j];
    dfs(0, 0);
    cout << mins << " ";
    for (int i = 1; i <= mins; ++i)
        cout << gg[i] << " \n"[i == mins];

}

原文地址:https://www.cnblogs.com/ALINGMAOMAO/p/10662112.html

时间: 2024-10-29 08:59:51

P1460 健康的荷斯坦奶牛 Healthy(DFS)的相关文章

洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins

题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少. 给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少. 维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解. 输入输出格式 输入格式: 第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数. 第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种

洛谷P1460 [USACO2.1]健康的荷斯坦奶牛 Healthy Holsteins

题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少. 给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少. 维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解. 输入输出格式 输入格式: 第1行:一个整数V(1<=V<=25),表示需要的维他命的种类数. 第2行:V个整数(1<=每个数<=1000),表示牛每天需要的每种

【一个蒟蒻的挣扎】简单算法

济南DAY1内容,老师讲的非常慢非常细(好容易懂de) 基本原理我就不写啦,这里只是记录一下一些例题 看看例题写写例题,OK 二分 [NKOI]循环赛日程表 二分查找 时间复杂度不超过O(log 2^n) [NKOI3592]人数统计 给出每个同学过题量和m个询问,求每个过题量k有几个 二分查找,L始终指向最左(右)边的k,求出区间后相减,就是答案. 二分快速幂 时间复杂度O(log b) 模板自己想啦 二分答案 跳石头[洛谷P2678] 贪心 方格取数 任务调度问题 分糖果 搜索 健康的荷斯坦

继承 各种关键字

一.关键字this, static, package和import语句 this:(this表示当前对象) --在类的方法定义中使用this关键字代表使用该方法的对象的引用 --当必须指出当前使用方法的对象是谁时要使用this --有时this可以处理方法中成员变量和参数重名的情况 --this可以看作是一个变量, 它的值是当前对象的引用 static 静态的(不在堆里面也不在栈里面, 在数据区(data seg)): --类名直接 . 出来的变量是静态变量, 每个类里面的静态变量只有一份, 是

02.TypeScript 接口

02.TypeScript 接口 TypeScript核心设计原则之一就是类型检查,而接口实际是为了这种类型检查而产生的,实际他并不会在生成的JavaScript里有半点体现. 一个简单的示例 // 定义IUser接口 interface IUser { name: string; // 姓名:字符串类型 age: number; // 年龄:数值类型 } function getUser(user: IUser) : string { return user.name + ':' + user

互联网服务端技术——如何学(下B)

今天想跟大伙儿聊聊分布式组件.说到组件,老王当年就觉得是高大上的玩意儿.一听说谁谁谁在哪个公司,写某某组件,仰慕之情犹如滔滔江水延绵不绝~后来自己也写了一些所谓的组件以后,觉得这个并没有什么神秘的.所谓组件,老王是这么理解的:为了一个整体的环境能够完整的工作,而提供的一些功能相对独立.目标明确.有可能通用性强一些的函数.类.库.模块.系统或者服务等等.比如,你写一个打印的函数,提供给文字编辑的软件使用,你的函数就可以叫做打印组件:也可以提供一个打印服务给文字处理系统,你的服务也可以叫做打印组件.

迁移FRS至DFSR SYSVOL

截至2017年6月20日,Windows 2016 RS1系统为最后一版支持FRS,后续版本将不再包含该功能,详细见 https://support.microsoft.com/en-us/help/4025991/windows-server-2016-rs3-no-longer-supports-frs 迁移状态简介 The migration process proceeds through a number of states, during which SYSVOL replicati

kubernter相关内容

1. Kubernetes 第一章:互联网架构的演变 随着1946年世界上第一台电子计算机的问世网络就随之出现了,只不过当初只是为了解决多个终端之间的连接,这就是局域网的雏形.后来,随着美国国防部高级研究计划局(ARPA)的无线.卫星网的分组交换技术的研究问世,一不小心搞出了TCP/IP,由此出现了我们所熟知的Internet互联网. 早期的电脑体积大,价格昂贵,一般只用在科学研究领域,后来随着集成电路,半导体的发展,电脑逐渐出现在我们的日常生活中.由此,我们对互联网的依赖越来越多,到现在已经成

2.1.4 Healthy Holsteins 健康的好斯坦奶牛

2.1.4 Healthy Holsteins 健康的好斯坦奶牛 一.题目描述 农民JOHN以拥有世界上最健康的奶牛为傲.他知道每种饲料中所包含的牛所需的最低的维他命量是多少.请你帮助农夫喂养他的牛,以保持它们的健康,使喂给牛的饲料的种数最少. 给出牛所需的最低的维他命量,输出喂给牛需要哪些种类的饲料,且所需的饲料剂量最少. 维他命量以整数表示,每种饲料最多只能对牛使用一次,数据保证存在解. PROGRAM NAME: holstein INPUT FORMAT 第1 行:一个整数V(1<=V<