zoukankan      html  css  js  c++  java
  • USACO holstein 超时代码

    /*
    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 32766
    
    
    //gobal variable====
    int V;
    int requirement[MAXV];
    int G;
    int feed[MAXG][MAXV];
    int result;
    int visited[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 t, int a[]){
    	if(t > V)
    		return;
    	if(t > result)
    		return;
    	if(check()){
    		if(t < result){
    			result = t;
    			for(int i = 0; i < t; i++){
    				res[i] = a[i];
    			}
    		}
    		return;
    	}
    	for(int i = 1; i <= G; i++){
    		if(visited[i] == 0){
    			visited[i] = 1;
    			for(int j = 1; j <= V; j++){
    				vit[j] += feed[i][j];
    			}
    			a[t] = i;
    			DFS(t + 1, a);
    			for(int j = 1; j <= V; j++){
    				vit[j] -= feed[i][j];
    			}
    			visited[i] = 0;
    		}
    	}
    	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];
    		}
    	}
    	result = 32766;
    	int ans[10000];
    	for(int i = 1; i <= G; i++){
    		memset(visited, 0, sizeof(visited));
    		memset(vit, 0, sizeof(vit));
    		visited[i] = 1;
    		for(int j = 1; j <= V; j++){
    			vit[j] += feed[i][j];
    		}
    		ans[0] = i;
    		DFS(1, ans);
    	}
    	cout<<result;
    	for(int i = 0; i < result; i++){
    		cout<<" "<<res[i];
    	}
    	cout<<endl;
    	return 0;
    }
    

  • 相关阅读:
    新增html元素的使用
    音频的使用和插入以及动态文字的使用
    创建表单以及表单元素的使用
    今天学习image在html中的应用
    Repeater里查找控件
    CSS 基础教程
    自然图像的颜色统计特征 Image Color Statistics
    [转]UE中使用正则表达式的一些技巧
    [转]SQL Server 的事务和锁
    [转]Amtura 商务智能项目实现手记
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/7085212.html
Copyright © 2011-2022 走看看