警示后人(不要用cin)

P4305 [JLOI2011] 不重复数字

@[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


| 下一页