题目来源:
http://218.194.91.48/acmhome/problemdetail.do?&method=showdetail&id=1163
描述
众所周知 acm 和 辩协 是好朋友,大家经常一起玩一个叫做狼人杀的游戏
然而新任的法官zy同学对于算该拿几张角色牌这种事情十分的苦恼
她希望聪明的你们可以写一个程序来帮助她~
规则
1.特殊角色: 女巫nw,预言家yyj,守卫sw,丘比特qbt,盗贼dz,猎人lr,白痴bc
2.普通角色: 狼lr,普通村民ptcm
3.特殊角色每种只有一名,普通角色不定
4.好人正营: 女巫,预言家,守卫,丘比特,盗贼,猎人,白痴,普通村民
5.邪恶正营: 狼(他们要杀人啊~)
6.狼人每天晚上可以一起杀死一个人
7.所有人每个白天可以一起投死一个他们以为是狼人的人(= =!一些愚蠢的好人会投死好人)
8.综合6.7好人比较可怜。。所以请在最坏情况下维持场上好人比坏人多两到三个~ (如果总人数为奇数则多3,如果总人数为偶数则多2)
9.当有盗贼这个特殊角色出现时,假设此时有n个人玩这次游戏,那么就必须有n+2张牌~
然而新任的法官zy同学对于算该拿几张角色牌这种事情十分的苦恼
她希望聪明的你们可以写一个程序来帮助她~
规则
1.特殊角色: 女巫nw,预言家yyj,守卫sw,丘比特qbt,盗贼dz,猎人lr,白痴bc
2.普通角色: 狼lr,普通村民ptcm
3.特殊角色每种只有一名,普通角色不定
4.好人正营: 女巫,预言家,守卫,丘比特,盗贼,猎人,白痴,普通村民
5.邪恶正营: 狼(他们要杀人啊~)
6.狼人每天晚上可以一起杀死一个人
7.所有人每个白天可以一起投死一个他们以为是狼人的人(= =!一些愚蠢的好人会投死好人)
8.综合6.7好人比较可怜。。所以请在最坏情况下维持场上好人比坏人多两到三个~ (如果总人数为奇数则多3,如果总人数为偶数则多2)
9.当有盗贼这个特殊角色出现时,假设此时有n个人玩这次游戏,那么就必须有n+2张牌~
输入
首先输入n(0<n<100),表示来玩的人的个数,接下来x行(0<x<8)输入特殊角色的简称,记录本次游戏参加的特殊角色
输入end表示结束特殊角色输入
输出
按照规则输出此局需要的狼人的个数和普通村民的个数
样例输入
12
nw
yyj
sw
qbt
dz
bc
end
样例输出
5 3
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
int n;
char st[10];
int main(){
int tot=0,lr,pt;
scanf("%d",&n);
if(!(n%2)) lr=(n-2)/2;
else lr=(n-3)/2;
pt=n-lr;
while(scanf("%s",st),st[0]!='e'){
if(!strcmp(st,"dz")) tot--;
else tot++;
}
pt-=tot;
printf("%d %d\n",lr,pt);
return 0;
}