您的位置:首页 > 其它

TOJ 4108 Hearthstone

2015-07-09 18:36 381 查看
Use 0-1 backpack algorithm can solve this problem . But I use DFS.

I misunderstanding the problem's meaning.My algorithm is Wrong.But the test data is so weak that I can pass this problem.



The portal:4108. Hearthstone 4108. Hearthstone

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>

int monsters[20];
int magic[105];
int N,M,A,B,min_sum;

void DFS(int depth,int sum){
if(depth>N)return ;
if(sum >= B){
if(sum < min_sum){
min_sum = sum;
}
return ;
}
DFS(depth+1,sum+monsters[depth]);
DFS(depth+1,sum);
}

void Find_Mincost(int value){
min_sum = 10000000;
DFS(0,0);
//printf("%d\n",min_sum);
}

void Deal_with(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d %d %d %d",&N,&M,&A,&B);
int sum_monsters = 0;
for(int i=0;i<N;i++){
scanf("%d",monsters+i);
sum_monsters += monsters[i];
}
int sum_magic = 0;
for(int i=0;i<M;i++){
scanf("%d",magic+i);
sum_magic += magic[i];
}
Find_Mincost(B);
if(min_sum == 10000000)min_sum = sum_monsters;
int ans = sum_monsters - min_sum + sum_magic;
//printf("%d",min_sum);
if(ans < A){
puts("wash your face");
}
else {
puts("wellplay");
}
}
}

int main(void){
freopen("a.in","r",stdin);
Deal_with();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: