qq_37891604的博客

人一我百,人十我万,怀着自信的心,永不放弃

cin cout加快

在ACM比赛过程中,一些大牛(佬)常常会使用一些奇淫技巧来优化自己的代码。甚至就连最简单的输入输出

都有一些常人意想不到的小技巧。

 

那么明明在C语言中有scanf()、printf(),C++中有cin、cout,为什么他们还要用输入输出外挂呢?这个问题很明显,一定是因为这些输入输出函数功能过于强大而导致效率低。

 

例如,许多学过c++,了解cin输入的人可能有所了解cin输入比较慢,在输入的时候需要关闭流同步来进行加速,即  std::ios::sync_with_stdio(false); 与  cin.tie(0); 语句 

 

但是实际上cin与scanf的输入速度并没有多大差异,cin慢的原因主要在于默认cinstdin总是保持同步, 这一步是消耗时间大户,所以如果我们在一些输入规模较大的程序中如果要采用cin输入的话,我们就必须要关闭cin流输入与scanf的同步。

 

事实上,大多数时候scanf,cin的读入速度即可满足我们的要求。但是, 当输入规模达到1×10^6次方的时候,此时scanf,cin输入所产生的时间代价就不可以再忽略了,而当输入规模再增大到一定地步时,很有可能仅仅输入所耗费的时间就会导致程序超时。

 

因此,一些大牛开始思考更快更高效的读入方法,因为scanf函数的功能远远要比我们所需的多,而有些题目有可能我们只需要读入整数这一种功能,所以我们可以针对这一点进行专门的改造。例如,我们可以根据所有的输入本质上都是字符,而采用getchar()输入然后转换成相对应的数字。这样我们就得到了较为优秀的读入模板1:模板1

 

但是,大牛们并不满足,因此他们选择的更高效的fread的文件读入,选择先将数据一次性的全读入内存,然后再逐步处理,得到所需要的数据类型。并且,他们把这些读入方式封装成了一个名为FAST IO的命名空间内。于是,我们得到了史上最高效的读入数据模板2:模板2

 

因为这个读入方法是如此的高效,有时候一些读入数据量较大的题目有可能通过这个读入方法所优化的时间来弥补算法设计上的不足,此时它几乎起到了和游戏外挂相似的效果,因此我们把这种读入方法称为“输入挂”。

 

当然输入输出外挂一般用在大量输入输出的情况下,这样性价比才高一些,否则得不偿失(牺牲了代码长度而换来了微不足道的效率提升)。

 

今天,我们希望每一个人都能够体验一把大牛的感觉,因此我们在这里给出了输入挂的模板,大家只需套用模板即可 获取这道题目的AC

Input

单组输入

首先输入一个整数 n(1 < n < 1000000000)

接下来是 n 个由空格分开的整数

Output

输出倒数第二个输入的数

Sample Input

3
1 2 3

Sample Output

2

Hint

Source

axuhongbo

#include<bits/stdc++.h>
using namespace std;
const int mx=1000101;
inline int read()
{
    register int c=getchar(),fg=1,sum=0;
    while(c>'9'||c<'0') {if(c == '-')fg = -1;c=getchar();}
    while(c<='9'&&c>='0'){sum=sum*10+c-'0';c=getchar();}
    return fg*sum;
}
int m,sum[mx],cnt,nn,mm;
int c[mx],a[mx];
int d;
int ans,x,y,z;
int main()
{
    int T,cas;
    char s[mx];
    int n,l,r;
    int fl;
    n=read();
    {
        for(int i=0;i<n;i++)
        {
            r=read();
            if(i==n-2)l=r;
        }
        printf("%d\n",l);
        //if(flag) puts("Yes");else puts("No");
         //puts("");
    }
    return 0;
}


/***************************************************
User name: zjx
Result: Accepted
Take time: 700ms
Take Memory: 220KB
Submit time: 2018-02-15 23:02:02
****************************************************/

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37891604/article/details/79967478
个人分类: 输入输出
上一篇input.txt output.txt
下一篇Physics Practical
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭