如果用cin.getline()或者cin.get(str,n)读取第二行的字符串,第一行cin>>n>>k之后需要过滤掉换行符
这时如果你使用cin.get()来过滤,并且不是Windows系统请注意(不是这么写的可以略过):
在Windows上的换行是"\r\n",即CRLF,使用cin.get()需要过滤两次;
但在Unix/Linux上只有'\n',即LF,只过滤一次即可
洛谷的输入文件是CRLF格式,所以本机使用Linux系统时,如果是自己输入的数据,cin.get()过滤一次,就可以通过,但提交测评后会全部WA(第一次过滤的只是'\r',换行符留在输入流中,cin.getline()读不到数据)
所以为了避免跨平台bug,建议用cin.ignore(INF,'\n')过滤换行符,或者用std::string直接cin>>str
(当然应该不会有人像我一样思路奇葩,专门装NOI Linux来模拟环境,std::string放着不用,非去用字符数组,还用cin.get()过滤换行符)