读入输出优化_C++

  当我们考试时遇到大量的读入或者输出时,这些代码会耗费许多运行程序的时间,导致TL

  本来 log2n 的算法因为读入被卡成线性的就太不划算了,所以我们这里要采用读入输出优化

  getchar 和 putchar 是最快的读入输出方式,变量名尽量用一些不是很常用的,以免冲突

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<iostream>
 6 #include<algorithm>
 7 using namespace std;
 8
 9 inline int read()
10 {
11     char ch=getchar();
12     int re=0;
13     bool fl=1;
14     /*
15     if (ch==‘-‘)
16     {
17         re=0;
18         ch=getchar();
19     }
20     */
21     while (ch>=‘0‘&&ch<=‘9‘)
22     {
23         re=re*10+ch-‘0‘;
24         ch=getchar();
25     }
26     return fl?re:-re;
27 }
28 inline void write(int re)
29 {
30     /*
31     if (re<0)
32     {
33         putchar(‘-‘);
34         re=-re;
35     }
36     */
37     if (re>9) write(re/10);
38     putchar(re%10+‘0‘);
39 }
40 int main()
41 {
42     int n=read(),i,a;
43     for (i=1;i<=n;i++)
44     {
45         a=read();
46         write(a);
47         putchar(‘\n‘);
48     }
49     return 0;
50 }

  这里注释掉的是考虑负数的情况,许多情况用不上

  还有许多题目的输出仅为一行或者很少的数据,我们可以不写输出优化

  还要注明一点,inline也是一个函数优化,它相当于整个函数define,可以看做直接将代码粘贴到调用的地方,而不进行递归,对于小而调用频繁的函数可以使用

  读入优化可以当一个模板背下来,其实自己写快的话也不过20秒的事

版权所有,转载请联系作者,违者必究

QQ:740929894

时间: 2024-10-16 23:38:04

读入输出优化_C++的相关文章

读入输出优化模板

因为是直接调用系统底层所以速度会很快... 1 long long read(){ 2 long long x=0,w=1; 3 char c=0; 4 for (c=getchar();c<'0'||c>'9';c=getchar()) {if (c=='-') w=-1;} 5 for (;c>='0'&&c<='9';c=getchar()) x=(x<<3)+(x<<1)+c-'0'; 6 return x*w; 7 } 读入 1 v

[读入输出优化]4.15正确的打开方式

读入输出优化 大概是那种写了不一定有用,但是好歹算是个心理安慰的东西 考试题太难不知该从何下手 先写个读入输出优化压压惊 没啥好讲解的部分,getchar,putchar是最快的读入输出方式 剩下的背模版就行 提示:名字取个别那么常见的就行 /*代码部分*/ int read(){ int x,f=1; char ch; while (ch=getchar(),ch<48||ch>57) if (ch=='-') f=-f; x=ch-48; while (ch=getchar(),ch>

网络赛用MOD-含读入输出优化模板和几个常用函数

之前一场比赛被读入优化坑了,一怒之下写了MOD MOD说明: 加入读入和输出优化,加快了速度 输入输出本地运行添加颜色区分 加入了一些常用函数,随机数范围扩大至0~2^64-1 读入与输出优化实测结果: 与scanf相比 整数类型速度提高一倍左右 浮点型速度提高5~7倍 字符及字符串类型提高1/10 与printf相比 整数类型速度提高1/5~2倍(数字越少速度越快)左右 浮点型速度不变 字符及字符串类型提高1/10 下方贴代码 <span style="font-size:12px;&q

常用读入\输出优化

本文主要讲述常用的2种读入优化方法. 输出优化很少使用,在此简单提一下:也就是把输出的东西先放进字符串,再一次性puts\printf出去.提升不大,不常用. 首先当然需要先知道,scanf/printf比cin/cout快不少. 读入优化: getchar 使用getchar一个一个读入字符,转化成数字.比scanf快一些. inline int read() { int f=1,x=0;//f是正负的标识 char ch; do { ch=getchar(); if(ch=='-') f=-

读入输出优化

代码 #include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cctype>#include<cmath>#include<cstdlib>#include<queue>#include<ctime>#include<vector>#inclu

读入/输出优化

void read(int &x) { int f=1;x=0;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} x*=f; } void print(int x) { if(x<0)putchar('-'),x=-x; if(x>9)print(x/10); put

【墙裂推荐】读入优化和输出优化

读入优化: 1 inline int read() 2 { 3 int X=0,w=1; char ch=0; 4 while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();} 5 while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar(); 6 return X*w; 7 } 输出优化: 1 inline void write

读入优化 &amp;&amp; 输出优化

qwq算是一个板子随笔吧 快读我在某大佬的博客中找到了更短的代码 但是这个写习惯了就改不了了qwq 其实是我不想改 废话好多 直接贴代码 1 //读入优化 2 inline int read(){ 3 char ch, c; 4 int res; 5 while (ch = getchar(), ch < '0' || ch > '9') c = ch; 6 res = ch - 48; 7 while (ch = getchar(), ch >= '0' && ch &

读入优化&amp;输出优化

读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x 负数处理:用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后x*=f即可 绝对值部分处理:getchar()每次只能读一位,所以每当读了一位s时,x*=10,为s留位置,由于s为字符,需要减去'0'才能转为整数即:x=x*10+s-'0' 关于细节: 很多时候有多余的空格或者其它的一些无关字符输入,处理时需要注意排除 代码: 1 void read(int