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

由于1v25,1g15,数据范围比较小,所以可以枚举出所有饲料的选择情况(215=32768),再取其中字典序最小的,饲料种数最少的方案

#include<iostream>
#include<vector>

using namespace std;

const int N = 25;

vector<int> res, backup;
vector<int> a;
vector<vector<int>> b;
int v, g;

void dfs(int u){
    if(u == g){
        // 是否满足奶牛的需要、比较一下字典序、比较一下饲料的个数
        bool flag = 1;
        for(int i = 0; i < v; i ++){
            int sum = 0;
            for(int j = 0; j < backup.size(); j ++)
                sum += b[backup[j]][i];
            
            if(sum < a[i]) flag = 0;
        }
        
        if(flag){
            if(res.size() == 0 || res.size() > backup.size()) 
                res = backup;
            else if(res.size() == backup.size())
                if(res[0] > backup[0]) res = backup;
        }
                
        return;
    }
    
    
    dfs(u + 1);
    
    backup.push_back(u);
    dfs(u + 1);
    backup.pop_back();
}

int main(){
    cin >> v;
    
    for(int i = 0; i < v; i ++){
        int t;
        cin >> t;
        a.push_back(t);
    }
    
    cin >> g;
    
    for(int i = 0; i < g; i ++){
        vector<int> c;
        for(int j = 0; j < v; j ++){
            int t;
            cin >> t;
            c.push_back(t);
        }
        b.push_back(c);
    }
    
    dfs(0);
    
    cout << res.size() << ' ';
    for(auto t : res) cout << t + 1 << ' ';
    
    return 0;
}
posted @   yys_c  阅读(79)  评论(0编辑  收藏  举报
编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· 软件产品开发中常见的10个问题及处理方法
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· Vite CVE-2025-30208 安全漏洞
· MQ 如何保证数据一致性?
· 《HelloGitHub》第 108 期
点击右上角即可分享
微信分享提示