sen很喜欢一款叫做《VA-11 Hall-A: Cyberpunk Bartender Action》的游戏。中文名《VA-11 Hall-A: 赛博朋克酒保行动》。
VA-11 HALL-A:Cyberpunk Bartender Action是一款关于waifu,科技及后-反乌托邦生活,以灌醉顾客为宗旨的调酒师模拟游戏。
Jill是游戏中的一名调酒师。
调酒理所当然地需要原料。
酒吧有k种饮料提供,每种饮料由不同数量(按瓶计算)的特定原料调制而成。
当然,有人会嫌饮料不够喝,所以酒吧还提供大杯饮料。
饮料分为中杯和大杯。
当一种饮料所有原料的用料总数超过10瓶(>10)时,这就是大杯饮料了。否则就是中杯饮料。
中杯饮料如果要做成大杯饮料,所用的所有原料的用量需要翻倍(也就是*2)。
客人会要求饮料是否要大杯。
如果客人点的饮料本来就是大杯饮料却没有要求大杯时依然会给客人调制大杯饮料。
又到了要进货调酒原料的时候了。
明天准备进货特定的m种原料。
Jill拿到了今天的记录,总共有n个客人点了饮料。
Jill想你来写个程序计算今天m种原料总共用了多少,这样就能对应算出大概需要重新进货多少了。
还有需要注意的是,k种饮料的某种原料有可能不出现在需要进货的m种中。
而客人只能点酒吧有的饮料。
---------下面的对话是没用的---------
凩生 0:34:43这样大家肯定会玩这个游戏
凩生 0:34:51然后发现令人吃惊的事情
sdqe 0:35:04what
凩生 0:35:25大家会发现我的样例数据跟游戏里的完全一样
sdqe 0:35:31笑死
输入格式
第1行输入case数T(T<=350)
对于每个case,第1行输入n,m,k(n<=100,m<=20,k<=30)
第2~m+1行每行输入一个字符串,表示最后需要统计的原料。
第m+2~m+k+1行每行先输入一个字符串s(表示这个饮料的名称),再输入一个x,然后在该后输入x个字符串和数字代表需要的原料和需要的瓶数。
第m+k+2~m+k+n+1行每行输入一个字符串和一个数字(0或1)分别表示每一位客人点的饮料和是否需要大杯(1为要求大杯,0为不要求大杯)。
所有字符串的长度<=30,不含空格
保证原料和饮料的名称不会出现重复
输出格式
对于每个case输出一行m个数,按输入的原料顺序输出每种原料用了多少瓶,数字用空格隔开,末尾不能有多余空格。
输入样例
2
6 3 4
a
b
c
q 2 a 1 b 3
w 3 c 1 a 2 b 1
e 1 a 3
r 3 c 2 b 2 d 2
q 1
q 0
e 0
w 1
r 0
r 1
24 5 24
Adelhyde
Bronson_Extract
Powdered_Delta
Flanergide
Karmotrine
Bad_Touch 4 Bronson_Extract 2 Powdered_Delta 2 Flanergide 2 Karmotrine 4
Beer 5 Adelhyde 1 Bronson_Extract 2 Powdered_Delta 1 Flanergide 2 Karmotrine 4
Bleeding_Jane 3 Bronson_Extract 1 Powdered_Delta 3 Flanergide 3
Bloom_Light 4 Adelhyde 4 Powdered_Delta 1 Flanergide 2 Karmotrine 3
Blue_Fairy 3 Adelhyde 4 Flanergide 1 Karmotrine 1
Brandtini 3 Adelhyde 6 Powdered_Delta 3 Karmotrine 1
Cobalt_Velvet 3 Adelhyde 2 Flanergide 3 Karmotrine 5
Crevice_Spike 3 Powdered_Delta 2 Flanergide 4 Karmotrine 1
Fluffy_Dream 3 Adelhyde 3 Powdered_Delta 3 Karmotrine 1
Fringe_Weaver 2 Adelhyde 1 Karmotrine 9
Frothy_Water 4 Adelhyde 1 Bronson_Extract 1 Powdered_Delta 1 Flanergide 1
Grizzly_Temple 4 Adelhyde 3 Bronson_Extract 3 Powdered_Delta 3 Karmotrine 1
Gut_Punch 3 Bronson_Extract 5 Flanergide 1 Karmotrine 1
Marsblast 4 Bronson_Extract 6 Powdered_Delta 1 Flanergide 4 Karmotrine 2
Mercury_Blast 5 Adelhyde 1 Bronson_Extract 1 Powdered_Delta 3 Flanergide 3 Karmotrine 2
Moonblast 4 Adelhyde 6 Powdered_Delta 1 Flanergide 1 Karmotrine 2
Piano_Man 5 Adelhyde 2 Bronson_Extract 3 Powdered_Delta 5 Flanergide 5 Karmotrine 3
Piano_Woman 5 Adelhyde 5 Bronson_Extract 5 Powdered_Delta 2 Flanergide 3 Karmotrine 3
Piledriver 3 Bronson_Extract 3 Flanergide 3 Karmotrine 4
Sparkle_Star 3 Adelhyde 2 Powdered_Delta 1 Karmotrine 1
Sugar_Rush 3 Adelhyde 2 Powdered_Delta 1 Karmotrine 1
Sunshine_Cloud 3 Adelhyde 2 Bronson_Extract 2 Karmotrine 1
Suplex 3 Bronson_Extract 4 Flanergide 3 Karmotrine 3
Zen_Star 5 Adelhyde 4 Bronson_Extract 4 Powdered_Delta 4 Flanergide 4 Karmotrine 4
Bad_Touch 1
Beer 1
Bleeding_Jane 1
Bloom_Light 1
Blue_Fairy 1
Brandtini 1
Cobalt_Velvet 1
Crevice_Spike 1
Fluffy_Dream 1
Fringe_Weaver 1
Frothy_Water 1
Grizzly_Temple 1
Gut_Punch 1
Marsblast 1
Mercury_Blast 1
Moonblast 1
Piano_Man 1
Piano_Woman 1
Piledriver 1
Sparkle_Star 1
Sugar_Rush 1
Sunshine_Cloud 1
Suplex 1
Zen_Star 1
输出样例
10 17 8
87 66 62 74 102
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int T;//记录多少个case
int i,n,m,k,x,j,p;
scanf("%d",&T);
while(T--)
{
int shu1[35]={0},c[35][35]={0},e[105]={2},num[105]={0},num1[35]={0};//每种需要的材料 //所要的酒的名字
char a[35][35],b[35][35][35],d[35][35],g[105][35];//所要记录的字符,用了的材料,酒的名字
scanf("%d%d%d",&n,&m,&k);
for(i=0;i<m;i++)
scanf("%s",a[i]);
for(i=0;i<k;i++)
{
scanf("%s",d[i]);
scanf("%d",&x);
for(j = 0;j < x;j++)
{
scanf("%s",b[i][j]);
scanf("%d",&c[i][j]);
num[i]=num[i]+c[i][j];//计算是否有十个
}
}
for(i=0;i<n;i++)
{
scanf("%s",g[i]);
scanf("%d",&e[i]);
for(j=0;j < k;j++)
{
if(strcmp(d[j],g[i])==0)
{
shu1[j]++;
if(num[j]<=10 && e[i]==1)
shu1[j]++;//没有十个的大杯加一
}
}
}
for(i = 0;i < m;i++)
{
for(j = 0;j < k;j++)
{
for(p=0;c[j][p]!=0;p++)
{
if(strcmp(a[i],b[j][p])==0)
num1[i]=num1[i]+shu1[j]*c[j][p];
}
}
}
for(i=0;i<m;i++)
{
printf("%d",num1[i]);
if(num1[i+1]==0&&T!=0)
printf("\n");
else
printf(" ");
}
}
return 0;
}