ios::sync_with_stdio 设置在每次输入/输出操作后标准 C++ 流是否与标准 C 流同步。这使得自由混合 C++ 和 CI/O 成为可能。 ios::sync_with_stdio(false); 如果关闭同步,则允许 C++ 标准流独立缓冲其 I/O,在某些情况下这可能会快得多。 tie是将两个stream绑定的函数,空参数的话返回当前的输出流指针。 其实cin的读取速度并不比scanf慢
图片从下到上依次是
- 使用cin,cout
- 使用cin,cout的基础上关闭同步ios::sync_with_stdio(false);
- 使用cin,cout的基础上关闭同步ios::sync_with_stdio(false)。同时解除cin,cout的绑定cin.tie(0); cout.tie(0);
- 使用scanf,printf
附录 代码参考 代码一
#include<iostream>
using namespace std;
const int N=1e5+10;
int stk[N], tt;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
while(tt && stk[tt]>=x) tt--;
if (tt) cout<<stk[tt]<<' ';
else cout<<-1<<' ';
stk[++tt]=x;
}
return 0;
}
代码二
#include<iostream>
using namespace std;
const int N=1e5+10;
int stk[N], tt;
int main()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
while(tt && stk[tt]>=x) tt--;
if (tt) cout<<stk[tt]<<' ';
else cout<<-1<<' ';
stk[++tt]=x;
}
return 0;
}
代码三
#include<iostream>
using namespace std;
const int N=1e5+10;
int stk[N], tt;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
while(tt && stk[tt]>=x) tt--;
if (tt) cout<<stk[tt]<<' ';
else cout<<-1<<' ';
stk[++tt]=x;
}
return 0;
}
代码四
#include<iostream>
using namespace std;
const int N=1e5+10;
int stk[N], tt;
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
while(tt && stk[tt]>=x) tt--;
if (tt) printf("%d ",stk[tt]);
else printf("-1 ");
stk[++tt]=x;
}
return 0;
}
以上结果可能不是特别精准,所以数据输入较大还是建议scanf 测试平台为AcWing
|