在 stackoverflow 上看到一个问题,cin 在 io 上比 python 慢,我大致了解了一下做个记录(Why is reading lines from stdin much slower in C++ than Python? - Stack Overflow):

首先,在默认情况下,cin 是与 stdio 同步的,这意味着 cin 避免了输入缓存,但是也意味着需要执行大量的系统调用,读的东西多了,性能上的损失是非常大的。所以才会很慢。

解决方法

将下一行加在 main 的第一行:

std::ios_base::sync_with_stdio(false);

陷阱

如果使用了上面的方法,那么像下面这样的代码可能就会出错,因为 cin 会提前读取 scanf 需要的内容,导致 scanf 没办法正确运行。所以这时候就不要混用 c 和 cpp 标准库了。

int myvalue1;
cin >> myvalue1;
int myvalue2;
scanf("%d",&myvalue2);