@[guang_zi_guei_ji](/user/1068448) 其实不用map就好了
by Lysea @ 2024-07-02 18:29:31
自己不会关同步流导致的
by jason_sun @ 2024-07-02 18:35:15
@[guang_zi_guei_ji](/user/1068448) 用 `cin` 一定开解流(开完解流 `cin` 比 `scanf` 快)
by ZMQ_Ink6556 @ 2024-07-02 18:35:49
在主函数内部开头写上:
```cpp
ios::sync_with_stdio(0);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
```
`cin` 提速不只一点。
by ZMQ_Ink6556 @ 2024-07-02 18:37:19
关掉流同步即可,还有快读
by wrongaaa @ 2024-07-02 18:46:14
@[zhangmoqing](/user/1125291) 解流之后的cin还是没有scanf快,而且解完之后scanf之类都不能用,卡常可用快读
by wrongaaa @ 2024-07-02 18:48:14
@[wrongaaa](/user/1231938) 关闭同步流后 `cin` 比 `scanf` 快。
code:
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[100005];
mt19937 rng(random_device{}());
uniform_int_distribution<int>gen(1,100000);
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0),cin>>n;
for(int i=1;i<=n;i++)
cin>>a[gen(rng)];
cout<<a[1];
return 0;
}
```
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[100005];
mt19937 rng(random_device{}());
uniform_int_distribution<int>gen(1,100000);
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[gen(rng)]);
printf("%d",a[1]);
return 0;
}
```
$n=10^8$ 且输入均为 $1$ 时,前者 4.79s,后者 5.30s
by MarSer020 @ 2024-07-02 19:12:44
@[MarSer020](/user/475112) 编译器自带的计时功能是直接从你开始编译到运行结束的时间,编译是有时间波动的,而且1e8的数据,正常电脑裸输入输出绝对1秒内,4.79和5.30是不太靠谱的
by wrongaaa @ 2024-07-02 19:35:59
@[wrongaaa](/user/1231938) 加了随机数是这样的。
环境是 noilinux,C++14 -O2
by MarSer020 @ 2024-07-02 19:38:15
>开始编译到运行结束的时间
如果我猜得没错,您说的是 dev-c++,但是我用的 VSCode
by MarSer020 @ 2024-07-02 19:38:47