洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins
生活随笔
收集整理的這篇文章主要介紹了
洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
農民JOHN以擁有世界上最健康的奶牛為傲。他知道每種飼料中所包含的牛所需的最低的維他命量是多少。請你幫助農夫喂養他的牛,以保持它們的健康,使喂給牛的飼料的種數最少。
給出牛所需的最低的維他命量,輸出喂給牛需要哪些種類的飼料,且所需的飼料劑量最少。
維他命量以整數表示,每種飼料最多只能對牛使用一次,數據保證存在解。
輸入輸出格式
輸入格式:
第1行:一個整數V(1<=V<=25),表示需要的維他命的種類數。
第2行:V個整數(1<=每個數<=1000),表示牛每天需要的每種維他命的最小量。
第3行:一個整數G(1<=G<=15),表示可用來喂牛的飼料的種數。
下面G行,第n行表示編號為n飼料包含的各種維他命的量的多少。
輸出格式:
輸出文件只有一行,包括
牛必需的最小的飼料種數P
后面有P個數,表示所選擇的飼料編號(按從小到大排列)。
如果有多個解,輸出飼料序號最小的(即字典序最?。?。
輸入輸出樣例
輸入樣例#1:
4
100 200 300 400
3
50 50 50 50
200 300 200 300
900 150 389 399
輸出樣例#1:
2 1 3
說明
USACO 2.1
翻譯來自NOCOW
又是一道奶牛題。
暴搜就能過
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int rans=1e9;
int ans[mxn];
int n,v[mxn],g,w[mxn][mxn];
int now[mxn],cpy[mxn];
bool check(){
// for(int i=1;i<=n;i++)printf("%d ",now[i]);
// printf("\n");
for(int i=;i<=n;i++)
if(now[i]<v[i])return ;
return ;
}
void DFS(int res,int pos){
if(res>=rans)return;
if(check()){
rans=res;
memcpy(ans,cpy,sizeof ans);
return;
}
// printf("%d %d\n",res,pos);
for(int i=pos;i<=g;i++){
for(int j=;j<=n;j++)now[j]+=w[i][j];
cpy[res]=i;
DFS(res+,i+);
for(int j=;j<=n;j++)now[j]-=w[i][j];
}
return;
}
int main(){
n=read();
int i,j;
for(i=;i<=n;i++)v[i]=read();
g=read();
for(i=;i<=g;i++)
for(j=;j<=n;j++)
w[i][j]=read();
DFS(,);
printf("%d ",rans-);
for(i=;i<rans;i++)printf("%d ",ans[i]);
return ;
}
總結
以上是生活随笔為你收集整理的洛谷P1460 健康的荷斯坦奶牛 Healthy Holsteins的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA 基础编程练习题26 【程序 2
- 下一篇: 状态码是canceled