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 

教育分类资讯推荐

5000元购买的志愿填报服务注水严重 - 天天要闻

5000元购买的志愿填报服务注水严重

原标题:5000元购买的志愿填报服务注水严重记者调查高考志愿填报服务乱“内部数据支撑”“专业团队运作”“一对一定制服务”“考得好不如报得巧”“同分不同途,分数决定人生岔路口”……随着今年各地高考分数的陆续公布,填报志愿成为当下考生及家长的重中之重。《法治日报》记者近日调查发现,网络平台上涌现大量高考志愿...
2025年哈尔滨市各民办校经审核后实际报名学生名单公示 - 天天要闻

2025年哈尔滨市各民办校经审核后实际报名学生名单公示

点击图片查看往期推荐RECOMMEND终于等到!哈尔滨地铁气象台站 4 号出入口 、群力第五大道站 2 号出入口明日同步开通2025年5月哈尔滨市查处违反中央八项规定精神问题92起关于开通我省2025年普通高校考试招生咨询、监督举报电话的公告更多精彩推荐来源:哈尔滨日报编辑:冉虹审核:张世佳监制:杨小南 孟佳玮新闻热线:0451-...
文科被贬损,都是自己作的! - 天天要闻

文科被贬损,都是自己作的!

文科的衰落与消亡,都是自己作的结果!在这个由算法与数据编织的时代,文科被推向了光影交错的边缘:2024年,美国哈佛大学校报刊发一则消息——“哈佛因教师离职取消30多门秋季课程”。哈佛学院(即本科生学院)取消了至少30门秋季课程,涉及20个系
思政课上“一束光” 少年心中“一盏灯” - 天天要闻

思政课上“一束光” 少年心中“一盏灯”

果洛西宁民族中学语文课上的“大思政”。参观村史馆。孩子们充满求知欲。一堂精彩的思政课。小学阶段的“新时代、新家乡”主题思政课本。牢记嘱托,青海深入学习贯彻习近平总书记重要讲话精神,落实立德树人根本任务,大力开展有形有感有效的思想政治教育,培
破茧明志 振翅追光 - 天天要闻

破茧明志 振翅追光

本报记者 杨燕玲“穿越八百里瀚海,您说,盐湖是青海最重要的资源,您从高原的明天看到祖国的未来……您语重心长的嘱托,化作滋养人民心灵、滋润青海大地的吉祥春雨……星河浩瀚,记得您的牵挂,我们与时代的波涛一起汹涌……”在青海师范大学附属第三中学举