玄关求助Linux
  • 板块灌水区
  • 楼主fangzichang
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/24 15:30
  • 上次更新2023/10/24 15:42:01
查看原帖
玄关求助Linux
678087
fangzichang楼主2023/10/24 15:30

我在CSP-S中使用了以下诡异读入:

inline void read(){}
template<class T1,class...T2>
inline void read(T1&ret,T2...rest){
    ret=0;char ch=getchar();bool f=false;
    while(ch<'0'&&ch>'9')f=ch=='-',ch=getchar();//注意到这里挂了
    while(ch>='0'&&ch<='9')ret=ret*10+ch-'0',ch=getchar();
    if(f)ret=-ret;
    read(rest...);
}
inline void read(string&ret){
    ret.clear();char ch=getchar();
    while(ch==' '||ch=='\n'||ch=='\r')ch=getchar();
    while(!(ch==' '||ch=='\n'||ch=='\r'))ret+=ch,ch=getchar();//注意到没判EOF
}
#define cin(...) read(__VA_ARGS__)

上面那个会导致死于多余空格,包括行末空格,但是我相信CCF不会在这里搞事情。
下面那个会导致,如果读入的字符串是在输入文件末尾,没有多余空格和换行,则读到EOF时!(ch==' '||ch=='\n'||ch=='\r')也不会被满足,ch=getchar()将无限等待下去导致TLE。
注意到S T2完美满足这一条件。
然后我本地Windows下,打开文件读写,使用第二个读入读字符串因为未知原因可以读入/jy
洛谷在线IDE上则会TLE,并且部分民间数据(洛谷的部分数据)会TLE,部分民间数据(云斗,小图灵,核OJ,洛谷的另一部分数据)不会,猜测是文末回车等等导致的。
但是这些地方有的要求文件读写有的不要求。
所以希望来个能用NOI Linux的人测一下,悬一关,先到先得。

2023/10/24 15:30
加载中...