c++ 读入优化、输出优化模板

  0. 在有些输入数据很多的变态题中,scanf会大大拖慢程序的时间,cin就更慢了,所以就出现了读入优化。其原理就是一个一个字符的读入,输出优化同理,主要使用getchar,putchar函数。

  1. int型读入优化(long long的只要把x改成long long型即可):

1 #include<cctype>
2 inline int read()
3 {
4     int x=0,f=0; char ch=0;
5     while(!isdigit(ch)) {f|=ch==‘-‘;ch=getchar();}
6     while(isdigit(ch)) x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
7     return f?-x:x;
8 }

  2.double型读入优化:

1 inline double dbread()
2 {
3     double x=0,y=1.0; int f=0; char ch=0;
4     while(!isdigit(ch)) {f|=ch==‘-‘;ch=getchar();}
5     while(isdigit(ch)) x=x*10+(ch^48),ch=getchar();
6     ch=getchar();
7     while(isdigit(ch)) x+=(y/=10)*(ch^48),ch=getchar();
8     return f?-x:x;
9 }

  3. int型输出优化(在一些输出数据量很大的题可能会用,同理long long型的改一下x的类型即可): 

1 inline void write(int x)
2 {
3      if(x<0) putchar(‘-‘),x=-x;
4      if(x>9) write(x/10);
5      putchar(x%10+‘0‘);
6 }

  在一些题中使用优化可能从TLE逆转AC,代码也比较短,平时多敲敲。

原文地址:https://www.cnblogs.com/FrankChen831X/p/10661348.html

时间: 2024-12-01 17:21:04

c++ 读入优化、输出优化模板的相关文章

读入优化 &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

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

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

读入输出优化模板

因为是直接调用系统底层所以速度会很快... 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

读入输出优化_C++

当我们考试时遇到大量的读入或者输出时,这些代码会耗费许多运行程序的时间,导致TL 本来 log2n 的算法因为读入被卡成线性的就太不划算了,所以我们这里要采用读入输出优化 getchar 和 putchar 是最快的读入输出方式,变量名尽量用一些不是很常用的,以免冲突 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<cmath> 5 #include<iostr

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

读入优化: 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

[读入输出优化]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>

常用读入\输出优化

本文主要讲述常用的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=-

Android 项目Log日志输出优化

概述 Android开发过程中经常需要向控制台输出日志信息,有些人还在用Log.i(tag,msg)的形式或者system.out.println(msg)方式吗?本篇文章对日志信息输出进行优化,以达到快速定位输出日志位置及输出规范日志的效果.日志输出行展示调用输出日志信息在哪个文件的第几行,并且可以和点击跳转到对应位置的作用. 输出日志的一般形式 1.在项目中直接调用Log.i(tag,msg)或者println函数,这是初级开发者的做法,不便于后期维护与统一控制. 2.在项目中对输出操作进行