题解:B3759 [信息与未来 2021] 文本分类
考虑有效的英语单词很多,但是有效的拼音很少,所以找个拼音表就做完了?
其实是有一个问题的。就是说有些英语单词在拼音中也存在。
回顾英语的语法,发现大多数情况需要动词。
而我们回顾拼音表,发现一般动词很少(至少我只看到了 song),就算有的话,结合拼音表名词也出现的很少,那么我们的错误率是极小的。
又发现其实有一个在拼音表中的情态动词 can,所以有可能出现有 can 的句子。
但是考虑能出现什么句子。基本上就是 a man can song 这种。
我们的做法看上去到了绝境。
但是发掘题目数据范围,发现
upd:根据作者的统计,与拼音重复的单词如下,可能不全,欢迎补充:
n.:各种人名,zen(禅宗信徒),you,tang(特性;强烈的味道;柄脚),tan(棕褐色,棕黄色;(日晒后变成的)棕褐色皮肤;鞣料树皮;(铺路和园艺中使用的)鞣酸皮渣),tong(钳子),song(歌曲),pan(锅),long(长的),lie(存在),hen(母鸡),hang(陈列),gong(奖章),fen(沼泽),ding(钟声),beng(大麻),bang(重击),ban(禁止),die(消亡)
v.:tan((使)晒成褐色,晒黑;鞣(革),硝(皮);<非正式,旧> 痛打(某人),鞭打(尤指作为惩罚)),long(渴望),lie(谎言),hang(悬挂),ding(打击),bang(爆炸),ban(禁止),die(死亡)
adj.:tan(棕黄色的,棕褐色的;晒黑的),long(长久的)
adv.:long(长久地),bang(正好)
vt.:tang(使声尖锐;装刀柄于)
vi.:tang(发出铿锵声;发出当的一声)
abbr.:tan(正切)
art.an(一个),a(一个)
你发现这些词显然凑不出长度为
所以我们证明了我们这个做法的正确率极高。
不放心的话可以特判几个英语的特殊情况,我没有特判。
#include <bits/stdc++.h>
using namespace std;
#define int long long
string ans[] = {
"a",
"ai",
"an",
"ang",
"ao",
"ba",
"bai",
"ban",
"bang",
"bao",
"bei",
"ben",
"beng",
"bi",
"bian",
"biao",
"bie",
"bin",
"bing",
"bo",
"bu",
"ca",
"cai",
"can",
"cang",
"cao",
"ce",
"cen",
"ceng",
"cha",
"chai",
"chan",
"chang",
"chao",
"che",
"chen",
"cheng",
"chi",
"chong",
"chou",
"chu",
"chuai",
"chuan",
"chuang",
"chui",
"chun",
"chuo",
"ci",
"cong",
"cou",
"cu",
"cuan",
"cui",
"cun",
"cuo",
"da",
"dai",
"dan",
"dang",
"dao",
"de",
"dei",
"deng",
"di",
"dian",
"diao",
"die",
"ding",
"diu",
"dong",
"dou",
"du",
"duan",
"dui",
"dun",
"duo",
"e",
"ei",
"en",
"eng",
"er",
"fa",
"fan",
"fang",
"fei",
"fen",
"feng",
"fo",
"fou",
"fu",
"ga",
"gai",
"gan",
"gang",
"gao",
"ge",
"gei",
"gen",
"geng",
"gong",
"gou",
"gu",
"gua",
"guai",
"guan",
"guang",
"gui",
"gun",
"guo",
"ha",
"hai",
"han",
"hang",
"hao",
"he",
"hei",
"hen",
"heng",
"hong",
"hou",
"hu",
"hua",
"huai",
"huan",
"huang",
"hui",
"hun",
"huo",
"ji",
"jia",
"jian",
"jiang",
"jiao",
"jie",
"jin",
"jing",
"jiong",
"jiu",
"ju",
"juan",
"jue",
"jun",
"ka",
"kai",
"kan",
"kang",
"kao",
"ke",
"ken",
"keng",
"kong",
"kou",
"kou",
"ku",
"kua",
"kuai",
"kuan",
"kuang",
"kui",
"kun",
"kuo",
"la",
"lai",
"lan",
"lang",
"lao",
"le",
"lei",
"leng",
"li",
"lia",
"lian",
"liang",
"liao",
"lie",
"lin",
"ling",
"liu",
"long",
"lou",
"lu",
"lv",
"luan",
"lue",
"lve",
"lun",
"luo",
"lv",
"lve",
"ma",
"mai",
"man",
"mang",
"mao",
"me",
"mei",
"men",
"meng",
"mi",
"mian",
"miao",
"mie",
"min",
"ming",
"miu",
"mo",
"mou",
"mu",
"na",
"nai",
"nan",
"nang",
"nao",
"ne",
"nei",
"nen",
"neng",
"ni",
"nian",
"niang",
"niao",
"nie",
"nin",
"ning",
"niu",
"nong",
"nu",
"nv",
"nuan",
"nue",
"nve",
"nuo",
"nv",
"nve",
"o",
"ou",
"pa",
"pai",
"pan",
"pang",
"pao",
"pei",
"pen",
"peng",
"pi",
"pian",
"piao",
"pie",
"pin",
"ping",
"po",
"pou",
"pu",
"qi",
"qia",
"qian",
"qiang",
"qiao",
"qie",
"qin",
"qing",
"qiong",
"qiu",
"qu",
"quan",
"que",
"qve",
"qun",
"qve",
"ran",
"rang",
"rao",
"re",
"ren",
"reng",
"ri",
"rong",
"rou",
"ru",
"ruan",
"rui",
"run",
"ruo",
"sa",
"sai",
"san",
"sang",
"sao",
"se",
"sen",
"seng",
"sha",
"shai",
"shan",
"shang",
"shao",
"she",
"shei",
"shen",
"sheng",
"shi",
"shou",
"shu",
"shua",
"shuai",
"shuan",
"shuang",
"shui",
"shun",
"shuo",
"si",
"song",
"sou",
"su",
"suan",
"sui",
"sun",
"suo",
"ta",
"tai",
"tan",
"tang",
"tao",
"te",
"teng",
"ti",
"tian",
"tiao",
"tie",
"ting",
"tong",
"tou",
"tu",
"tuan",
"tui",
"tun",
"tuo",
"wa",
"wai",
"wan",
"wang",
"wei",
"wen",
"weng",
"wo",
"wu",
"xi",
"xia",
"xian",
"xiang",
"xiao",
"xie",
"xin",
"xing",
"xiong",
"xiu",
"xu",
"xuan",
"xue",
"xun",
"ya",
"yan",
"yang",
"yao",
"ye",
"yi",
"yin",
"ying",
"yong",
"you",
"yu",
"yuan",
"yue",
"yve",
"yun",
"yve",
"za",
"zai",
"zan",
"zang",
"zao",
"ze",
"zei",
"zen",
"zeng",
"zha",
"zhai",
"zhan",
"zhang",
"zhao",
"zhe",
"zhen",
"zheng",
"zhi",
"zhong",
"zhou",
"zhu",
"zhua",
"zhuai",
"zhuan",
"zhuang",
"zhui",
"zhun",
"zhuo",
"zi",
"zong",
"zou",
"zu",
"zuan",
"zui",
"zun",
"zuo"
};
inline void solve(){
int n;
cin >> n;
string s;
bool f1 = 1 , f2 = 1;
bool ff = 1;
sort(ans , ans + 411);
for(int i = 1;i <= n;i++){
cin >> s;
if(ff){
bool fg = (*lower_bound(ans , ans + 411 , s) == s);
f1 &= fg;
if(s[0] == 't' && s[1] == 'h') f1 = 0;
if(!f1){
ff = 0;
// cout << s << '\n';
}
}
}
if(f1) cout << "Pinyin\n";
else cout << "English\n";
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0) , cout.tie(0);
int t;
cin >> t;
while(t--) solve();
return 0;
}