USACO备考冲刺必刷题 | P1460 Healthy Holsteins

2023年12月10日19:40:07 教育 1979

学习C++从娃娃抓起!记录下USACO(美国信息学奥赛)备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:USACO备考冲刺必刷题 | P1460 Healthy Holsteins - 天天要闻

#include <bits/stdc++.h>
using namespace std;
int vType, fType, p;
int v[30], f[20][30], sel[20], ans[20];
int minSelCnt = 20;
bool check(int selCnt)  // 定义维他命检查函数
{
    for (int i=1; i<=vType; i++) {  // 依次遍历所有维他命种类
        int sum = 0;  // 定义每种维他命的总数,每次循环初始为0
        for (int j=1; j<=selCnt; j++) {  // 依次遍历选择的那些饲料
            sum += f[sel[j]][i];  // sum加上选择的饲料编号的维他命值
        }
        if (sum<v[i]) {  // 如果总和
            return false;
        }
    }
    return true;
}
void dfs(int pos, int cnt)  // 定义dfs函数,pos为饲料编号,cnt为饲料选择的数量
{
    if (pos > fType) {  // dfs退出条件,直到选到最后一种饲料编号
        if (check(cnt) && cnt < minSelCnt) {  // 如果此时选择的饲料的每种维他命之和大于最小维他命需要,且选择数量小于最小选择数量
            minSelCnt = cnt;  // 更新最小选择数量
            for (int i=1; i<=cnt; i++) {  // 更新结果数组,即更新为选择的饲料种类
                ans[i] = sel[i];  
            }
        }
        return;  // 一定要写!
    }
    sel[cnt+1] = pos;  // 选择编号为pos的饲料
    dfs(pos+1, cnt+1);  // 继续选择pos+1编号的饲料,cnt自增1
    sel[cnt+1] = 0;  // 不选编号为pos的饲料,不选就用0占位(这句可以忽略,因为下一句dfs中cnt不变,下次执行后会被修改)
    dfs(pos+1, cnt);  // 继续dfs搜索pos+1编号的饲料,但cnt不增加
}
int main()
{
    cin >> vType;  // 输入需要的维他命种类数
    for (int i=1; i<=vType; i++) {  // 遍历维他命种类数
        cin >> v[i];  // 输入每种维他命的最小量
    }
    cin >> fType;  // 输入饲料种数
    for (int i=1; i<=fType; i++) {  // for循环遍历饲料种数
        for (int j=1; j<=vType; j++) {  // for循环遍历维他命种类数
            cin >> f[i][j];  // 输入这种饲料各种维他命的值
        }
    }
    dfs(1, 0);  // 使用dfs搜索,起始饲料编号为1,0种选择
    cout << minSelCnt << " ";
    for (int i=1; i<=minSelCnt; i++) {
        cout << ans[i] << " ";
    }
    return 0;
}

【运行结果】

4
100 200 300 400
3
50  50  50  50
200 300 200 300
900 150 389 399
2 1 3 

教育分类资讯推荐

一所消逝学校的永恒记忆——《我的安乡四中》首发式侧记 - 天天要闻

一所消逝学校的永恒记忆——《我的安乡四中》首发式侧记

红网时刻新闻 记者 胡丹 安乡报道一所已经撤销17年的学校,120多位师生从天南地北奔赴而来,一位企业家全额捐建纪念碑亭,更催生出一部66.7万字的厚重著作……这一幕,发生在湖南省安乡县。5月2日,《我的安乡四中》首发式隆重举行。没有宏大的场馆,没有明星助阵,有的只是一群白发苍苍的校友、几位年迈的教师,以及他们眼...
华附知识城校区每间宿舍有洗衣机!扩招百人,分数线有望回调 - 天天要闻

华附知识城校区每间宿舍有洗衣机!扩招百人,分数线有望回调

南都讯 记者梁艳燕 实习生蔡梓烨 5月2日,华南师范大学附属中学(以下简称“华附”)在知识城校区举行校园开放日活动。华附党委书记姚训琪面向到场的家长与学子,详细介绍了学校的整体办学情况、教育理念及2026年高中招生政策。他直言,今年是读华附高中的最好机会。咨询台前围满了前来咨询的家长。今年扩招100人,分数线有...
学生因走路看手机被劝退,连带4名教师被辞退?大学教育岂能“山大王舞杀威棒” - 天天要闻

学生因走路看手机被劝退,连带4名教师被辞退?大学教育岂能“山大王舞杀威棒”

极目新闻评论员 屈旌近日,多名网友发文反映,泉州职业技术大学因学生玩手机,不仅劝退该学生,还辞退了4名教师。网帖中的聊天记录显示,2023级学生林某某因未遵守规定,走路看手机,“相关责任教师章某某、辅导员姚某、班主任沈某某、体育老师林某等予以辞退,对该生予以劝退”。疑似该校领导发言称,“责任老师马上开除”...
王兴兴的逆袭之路,很真实 - 天天要闻

王兴兴的逆袭之路,很真实

一觉醒来,浙江大学和上海大学都沉默了,当年王兴兴因英语差被浙大拒之门外,转而去了上海大学读研,如今,他创办的宇树科技因四足机器人火了,连带他与两校的故事也被扒出。考研英语差两分是什么概念?坐在浙大机械学院招生办的那位老师,大概觉得自己在维护
合肥工业大学通报“学生涉嫌盗用他人作品参赛获奖”:其获奖作品均为网络下载或购买,该生存在学术不端行为,给予其开除学籍处分 - 天天要闻

合肥工业大学通报“学生涉嫌盗用他人作品参赛获奖”:其获奖作品均为网络下载或购买,该生存在学术不端行为,给予其开除学籍处分

5月2日,合肥工业大学发布情况通报:近日,学校关注到网上对于学生涉嫌盗用他人作品参赛获奖的相关反映。学校高度重视,立即成立工作专班核查处理。现通报如下:经查,涉事人员孙某某为我校建筑与艺术学院学生。该生化名孙艺,通过网络平台招募校外人员参加第九届米兰设计周-中国高校设计学科师生优秀作品展,以“个人参赛...
荣光绽放!银川教师秦春娟亮相央视“五一”特别节目 - 天天要闻

荣光绽放!银川教师秦春娟亮相央视“五一”特别节目

【来源:银川日报】5月1日晚《中国梦·劳动美——2026五一国际劳动节“心连心”特别节目》在央视三个频道同时播出银川市金凤区良田中学教师秦春娟出现在“奋斗者说”环节她的一句“任何一个孩子都不能放弃,我希望成为垫起孩子人生的那块砖。