对于输入数据非常大的一些可(变)爱(态)题目,scanf就会大大拖慢程序的运行速度,cin就更不用说了,所以我们要用一种高大上的东西——读入优化。

读入优化的原理其实就是一个一个字符的读入,再组成数字

==================================================================

下面贴一段读入优化的模板

 int read()
{
int x=,f=;
char ch;
while(ch<''||ch>'') {if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return f*x;
}

这就是最基本的读入优化,通过getchar函数依次读入字符,用x记录答案,用f判断正负。

ps:在主程序中调用时int n=read();即可

===========================前方高能预警===============================

下面是dalao的读入优化模板

 template<class T>void read(T &x)
{
x=;int f=;char ch=getchar();
while(ch<''||ch>'') {f|=(ch=='-');ch=getchar();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ch^);ch=getchar();}
x=f?-x:x;
return;
}

template就是让这个函数随时可以调用,而且可以用int、double、char……(反正很装13就对了)

用了指针,会快更会装13。

下面的f|=(ch=='-')如果ch==‘-’,f就改符号(还可以判断多个负号),位运算,会快

<<x就相当于2^x,会非常快;

最后问号表达式装13

总之就是一个优(装)化(B)的读入优化

ps:不过TA真的比普通的读入优化要很多

pss:调用时直接read(n)就好了这就是指针的好处

===========================我是分割线================================

以下的读入优化需要在freopen条件下使用(其实用的不是很多,大多数情况用上面那种)

下面是比以上读优都要快的julao的读入优化(划重点)fread

 inline char GET_CHAR(){
static char buf[maxn],*p1=buf,*p2=buf;
return p1==p2&&(p2=(p1=buf)+fread(buf,,maxn,stdin),p1==p2)?EOF:*p1++;
}
template<class T>void read(T &x)
{
x=;int f=;char ch=GET_CHAR();
while(ch<''||ch>'') {f|=(ch=='-');ch=GET_CHAR();}
while(ch>=''&&ch<=''){x=(x<<)+(x<<)+(ch^);ch=GET_CHAR();}
x=f?-x:x;
return;
}

简单的来说就是把getchar函数手写,改为文件读入(fread)。

eg:fread原理:把数据流整段的存到数组buf中,整段的读取,数组存满了再重新覆盖。所以比getchar()一个一个读要快

其实我也不是很懂fread,感性理解吧QAQ。

===========================我是分割线================================

一点点忠告:说实话用不用读入优化完全看自己,如果要用就把它当做一个模板,哪怕是a+b的时候也打上。我就是这样(有点读入情节)虽然有的时候并不能快多少,但是至少会让自己的代码效率稍微高那么一丢丢,而且天天打,永远不会错。

但有些dalao平时不用,考试的时候打上,其实我不太建议这样。因为身边有好几个朋友都是因为在考场上读优打错,然后0分。非常的可惜,所以如果考试要用的话最好多打几次保证自己不会错,防止在复赛上gg

NOIP2018RP++;

感谢学姐uncle-lu的模板

61646D696E

c++读入优化的更多相关文章

  1. fread读入优化,寻找速度极限

    序: 在之前的测试中,我们比较了四种读入方式,发现使用读入优化是最快的选择,但是我们知道fread()是比它更快的方法.这一次,我们对比四种读入优化,探寻C++读取速度的极限. 分别是getchar( ...

  2. OI黑科技:读入优化

    利用getchar()函数加速读入. Q:读入优化是什么? A :更加快速地读入一些较大的数字. Q:scanf不是已经够快了吗? A:Naive,scanf还是不!够!快! Q:那怎么办呢? A:我 ...

  3. ACM:读入优化

    两个简单的读入优化 int getin(){ ;; while(!isdigit(tmp=getchar()) && tmp!='-'); ,tmp=getchar(); )+(ans ...

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

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

  5. 【ACM非算法部分】读入优化

    今天做了ACdream的比赛才知道原来还有读入优化这一说.Orz 读入一个整数的时候这么写: int a; scanf("%d",&a); 和 int a; char c; ...

  6. 读入优化&输出优化

    读入优化 int read() { ; ') ; '; ') num=num*+c-'; return ff*num; } 输出优化 void write(int x) { ) { putchar(' ...

  7. C++ 读入优化&输出优化

    读入优化:读入优化只是针对整数,由于getchar()读字符非常的快,所以采用getchar()来进行读入,下设输入的数为x 负数处理:用一个标志变量f,开始时为1,当读入了'-'时,f变为-1,最后 ...

  8. HDU 5972 Regular Number(ShiftAnd+读入优化)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5972 [题目大意] 给出一个字符串,找出其中所有的符合特定模式的子串位置,符合特定模式是指,该子串 ...

  9. 【CSP模拟赛】天才绅士少女助手克里斯蒂娜(线段树&读入优化&输出优化)

    题面描述 红莉栖想要弄清楚楼下天王寺大叔的显像管电视对“电话微波炉(暂定)”的影响.选取显像管的任意一个平面,一开始平面内有个n电子,初始速度分别为vi,定义飘升系数为 $$\sum_{1\leqsl ...

随机推荐

  1. python的一些基本概念知识和面试题

    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...

  2. kibana设置mapping

    demo: PUT linewell_assets_mgt_fz_es/lw_devices/_mapping { "properties": { "update_tim ...

  3. json 脚本入库的几种方法

    json 脚本入库的几种方法,见代码: #-*- encoding: utf-8 -*- #第一种mongodb入库 # from pymongo import * # import json # c ...

  4. Qt获取QObject对应的类名并把它转为真实类型(使用obj->metaObject()->className() )

    QObject是有窗口类的父类,比如QWidget,QLabel,QPushButton等都直接或间接继承自QObject类.如果把某个窗口中的所有控件都装到一个QList<QObject*&g ...

  5. 内核block机制

    内核版本:linux2.6.22.6 硬件平台:JZ2440 驱动源码 block_ipc_poll_key_int_drv.c : #include <linux/module.h> # ...

  6. rar压缩类

    using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; namespa ...

  7. JavaScript字符串String

    JavaScript中String类型用于表示由零个或者多个16位Unicode字符组成的字符序列即字符串:同时字符串可以用单引号或双引号表示. 下面是一些特殊的字面量: 字面量 含义\n 换行\t ...

  8. wordpress去掉category怎么操作让url更简洁友好

    用wordpress建站是比较流行的,全球将近25%的站点是用wordpress搭建的.有很多的模板.插件可以选择,当然最好还是能自己优化.URL固定链接就是之中一个基础的技巧.有网友问如何去掉url ...

  9. Linux系统启动排错实验集合

    Centos6系统启动流程 1. post  加电自检  检查硬件环境 2. 选择一个硬件类型引导启动           mbr 446字节   grub  stage1 3. 加载boot分区的文 ...

  10. NYOJ 会场安排问题

    #include<iostream> #include<stdio.h> #include<string.h> #include<queue> #inc ...