P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)
題目描述
農(nóng)民JOHN以擁有世界上最健康的奶牛為傲。他知道每種飼料中所包含的牛所需的最低的維他命量是多少。請(qǐng)你幫助農(nóng)夫喂養(yǎng)他的牛,以保持它們的健康,使喂給牛的飼料的種數(shù)最少。
給出牛所需的最低的維他命量,輸出喂給牛需要哪些種類的飼料,且所需的飼料劑量最少。
維他命量以整數(shù)表示,每種飼料最多只能對(duì)牛使用一次,數(shù)據(jù)保證存在解。
輸入輸出格式
輸入格式:
第1行:一個(gè)整數(shù)V(1<=V<=25),表示需要的維他命的種類數(shù)。
第2行:V個(gè)整數(shù)(1<=每個(gè)數(shù)<=1000),表示牛每天需要的每種維他命的最小量。
第3行:一個(gè)整數(shù)G(1<=G<=15),表示可用來(lái)喂牛的飼料的種數(shù)。
下面G行,第n行表示編號(hào)為n飼料包含的各種維他命的量的多少。
輸出格式:
輸出文件只有一行,包括
牛必需的最小的飼料種數(shù)P
后面有P個(gè)數(shù),表示所選擇的飼料編號(hào)(按從小到大排列)。
如果有多個(gè)解,輸出飼料序號(hào)最小的(即字典序最小)。
輸入輸出樣例
輸入樣例#1:
4
100 200 300 400
3
50 50 50 50
200 300 200 300
900 150 389 399
輸出樣例#1:
2 1 3
說(shuō)明
USACO 2.1
翻譯來(lái)自NOCOW
#include<bits/stdc++.h> using namespace std; int n,sum[101],a[101],min1=100001,ans,b[101][101],k,s,r[101],o[101]; void dfs(int x) {int l=0,i;for(i=1;i<=n;i++){if(sum[i]<a[i]){l=1;}}if(l==0){if(ans<min1)//更新{mina=ans;for(i=1;i<=ans;i++)r[i]=o[i];}return;} if(l==1){ans++;o[ans]=x;for(i=1;i<=n;i++){sum[i]=sum[i]+b[x][i];}for(i=1;i<=k-x+1;i++)dfs(x+i);ans--;for(i=1;i<=n;i++){sum[i]=sum[i]-b[x][i];}} } int main() {int i,j;cin>>n;for(i=1;i<=n;i++){cin>>a[i];}cin>>k;for(j=1;j<=k;j++){for(i=1;i<=n;i++){cin>>b[j][i];}}dfs(0);cout<<mina-1<<" ";for(i=2;i<=mina;i++){cout<<r[i]<<" ";} }總結(jié)
以上是生活随笔為你收集整理的P1460 健康的荷斯坦奶牛 Healthy Holsteins (简单的dfs)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦幻诛仙手游装备启灵攻略有哪些
- 下一篇: P1468 派对灯 Party Lamp