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 

教育分类资讯推荐

匈牙利获取驾照的成本大幅上涨 - 天天要闻

匈牙利获取驾照的成本大幅上涨

匈牙利媒体报道:根据中央统计局(KSH)的最新数据,匈牙利考取驾照的平均价格在四年内上涨了 60%,由于汽油、维修费用以及教练费等成本都更加昂贵,使得获取驾照的费用可能高达 80 万至 90 万福林。然而,问题不仅仅是成本普遍上涨,人们对待
新高考为什么要倡导“教考衔接”?有三个重要原因 - 天天要闻

新高考为什么要倡导“教考衔接”?有三个重要原因

同旧高考相比,新高考有一个近些年喊得很响的理念——教考衔接。什么是教考衔接,简单来说,就是学校教什么,高考就考什么。大家知道,旧高考也有一个喊得很响的理念——以考定教。这个理念指挥了高考十几年,其弊端已经十分明显。
滨州医学院:政校企携手赋能 共促医学人才高质量就业 - 天天要闻

滨州医学院:政校企携手赋能 共促医学人才高质量就业

中国青年报客户端讯(中青报·中青网记者 邢婷)近日,滨州医学院举办“就选山东 ‘医’往‘职’前”2025年春季校园双选会暨“美好‘卫’来 ‘健’康烟台”医学人才筑梦烟台招聘会。招聘会现场,350家用人单位携1.2万个就业岗位进校揽才。该校4300余名毕业生参加招聘会,2500余名毕业生与用人单位达成初步就业意向,实现医...
“百校千企万岗”,江苏共青团“送岗直通车”进江科大助力大学生就业 - 天天要闻

“百校千企万岗”,江苏共青团“送岗直通车”进江科大助力大学生就业

中国青年报客户端讯(中青报·中青网记者 李超)4月11日,江苏共青团“送岗直通车”开进江苏科技大学举办“百校千企万岗”示范招聘会。这是江苏共青团青少年民生实事项目之一,联动各界协同发力,为应届高校毕业生搭建高质量就业桥梁,助力青年学子实现“好就业、就好业”。江苏省百校千企万岗”示范招聘会现场。 主办方供...
何同学的反讨好之困 - 天天要闻

何同学的反讨好之困

本文来自微信公众号:王智远,作者:王智远,题图来自:AI生成事情是这样:4月11日晚,何同学在微博上分享了自己打车的经历;他说以前打网约车时,司机让他给好评,总是嘴上答应,但事后就忘了。他觉得这样不太好,所以,现在改。如果司机服务真的很棒,他才会主动好评;不然就会直接拒绝;他还提到,自己以前比较爱讨好别...
大风天去不了考场,报名费打水飘?教育部教育考试院:这钱,我退! - 天天要闻

大风天去不了考场,报名费打水飘?教育部教育考试院:这钱,我退!

4月11日至13日,受较强冷空气影响,华北出现历史同期罕见的持续性大风。其中,河北北部等地局地阵风风力可达12~13级,中央气象台发布橙色预警,提醒公众减少户外活动,多地景点临时关闭,部分中小学及高校宣布停课或转为线上教学。△ 社交平台相关话题截图受此影响,已经报名参加本届韩国语能力考试(TOPIK)的考生群体对...