题目描述
不同的国家和地区,使用着不同的语言。
在不同的语言中,形容猫的叫声的拟声词也有所不同,比如中文中是“喵 (miao)”,
英文中是“meow”,日文中是“にゃー(nyaa)”。
牛牛想知道,不同国家和地区的猫,是不是真的存在不同的交流方式。
为了验证这个事情,他将m种语言编号为1,2, . . . , m。然后他随机的找来了一只猫,
并对着猫发出 n 次猫叫声,其中第i 次猫叫声是第 ai (1 ≤ ai ≤ m)种语言中猫叫
的拟声词。
每次发出猫叫声后,他会记录猫是否对其回应。如果猫在第i次回应了牛牛,牛牛
则记录bi = 1,否则记录bi = 0。
如果猫只对某种语言的叫声做出回应,并对该种语言的每次叫声都做出回应,那
么牛牛就判断,不同国家和地区的猫确实存在不同的交流方式,并且认为这只猫
来自该种语言的国家。此时输出该种语言的编号。
否则,如果猫对≥ 2种语言的叫声做出了回应,或者对1种语言做出过回应,但没
有对每次该语言的叫声做出回应,那么牛牛认为猫真可爱,并且给它一条小鱼干。
此时输出^v^。
当然也有可能,猫根本就不回应牛牛的任意一次叫声,这时牛牛将会很沮丧。此
时输出 >-<。
思路
记录叫的次数和分别回应的次数, cnt 统计几次叫满(都回应了),k 统计几次至少回应了一次,对比即可。
Code
讲解都在注释里:
#include<cstdio>
#include<iostream>
#include<map>
#include<cstring>
#include<bitset>
using namespace std;
const int N=1e5+5;
int n,m,T,cnt,a[N],b[N],v[N],num[N];
int main(){
scanf("%d",&T);
while(T--){
memset(num,0,sizeof(num));
memset(v,0,sizeof(v));
scanf("%d%d",&n,&m);

牛牛通过观察不同语言中猫叫声的拟声词,探究猫是否根据语言差异作出不同回应。程序通过记录每种语言叫声的次数和回应次数,判断猫的交流方式。如果猫只对一种语言每次都回应,则认为猫来自该语言地区;若回应多种语言或未回应,则输出相应结论。
&spm=1001.2101.3001.5002&articleId=127461028&d=1&t=3&u=117b5e8ef5f64b59b1658c53c6117e05)

被折叠的 条评论
为什么被折叠?



