• USACO holstein AC code


    /*
    ID:kevin_s1
    PROG:holstein
    LANG:C++
    */
    
    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <vector>
    #include <map>
    #include <set>
    #include <algorithm>
    #include <cstdlib>
    #include <list>
    #include <cmath>
    
    using namespace std;
    
    #define MAXV 26
    #define MAXG 16
    #define INF 327699
    
    
    //gobal variable====
    int V;
    int requirement[MAXV];
    int G;
    int feed[MAXG][MAXV];
    int result;
    
    int ans[MAXG];
    int vit[MAXV];
    int res[MAXG];
    //==================
    
    
    //function==========
    bool check(){
    	bool flag = true;
    	for(int i = 1; i <= V; i++){
    		if(vit[i] < requirement[i])
    			flag = false;
    	}
    	return flag;
    }
    
    void DFS(int deep, int count){
    	if(deep == G + 1){
    		if(check() == false)
    			return;
    		if(count < result){
    			result = count;
    			for(int i = 1; i <= result; i++){
    				res[i] = ans[i];
    			}
    		}
    		return;
    	}
    	for(int i = 1; i <= V; i++){
    		vit[i] += feed[deep][i];
    	}
    	ans[count + 1] = deep; 
    	DFS(deep + 1, count + 1);
    	for(int i = 1; i <= V; i++){
    		vit[i] -= feed[deep][i];
    	}
    	DFS(deep + 1, count);
    	return;
    }
    
    //==================
    
    int main(){
    	freopen("holstein.in","r",stdin);
    	freopen("holstein.out","w",stdout);
    	cin>>V;
    	for(int i = 1; i <= V; i++){
    		cin>>requirement[i];
    	}
    	cin>>G;
    	for(int i = 1; i <= G; i++){
    		for(int j = 1; j <= V; j++){
    			cin>>feed[i][j];
    		}
    	}
    	memset(res, 0, sizeof(res));
    	memset(ans, 0, sizeof(ans));
    	memset(vit, 0, sizeof(vit));
    	result = INF;
    	DFS(1, 0);
    	cout<<result;
    	for(int i = 1; i <= result; i++){
    		cout<<" "<<res[i];
    	}
    	cout<<endl;
    	return 0;
    }
    

  • 相关阅读:
    substr函数
    Oracle 日期处理
    translate函数使用
    nvl函数
    random随机函数
    case语句
    列的拼接
    并行HASH JOIN小表广播问题
    WITH AS 优化逻辑读
    【hihoCoder挑战赛28 A】异或排序
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5362391.html
Copyright © 2020-2023  润新知