【编程技巧】 快读

什么是快读

我们知道,scanff比cin快,在读入量大的时候便可以优化时间复杂快.
快读就是一种读入很快的读入方法,可以优化时间复杂度.

快读快吗

快读很快,比cin与scanf都快,可以极大优化时间复杂度

为什么要用快读

1.我们知道cin和scanf不能混用,但在保留小数的时候不得不用printf,我们知道cin和printf不能混用,这时候便可以用快读read,再用printf
2.很快…….过会儿在举例中可以得到

快读为什么很快

int读是很慢的,我们需要用更快的字符的读入方法getchar进行读入.

快读原理

用字符读入,再转换成数字,最后输出.

快读代码实现

inline int read(){
   int s=0,w=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}//如果输入

 是字符,判断是否是负数
   while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//输入数字并统计
   return s*w;//输出结果
}

快读实例

【问题描述】
刘天泽告诉陈卓他有完全记忆能力,刘天泽能把所有记忆都记得一清二楚。不过陈卓没有相信,于是刘天泽准备好扑过去要咬陈卓的头。陈卓为了防止年纪轻轻就头皮坏死,只好找了一串只由小写字母组成的序列,每次他将提问刘天泽某个小写字母第k次出现的位置。但是陈卓自己也算不过来,只好求助于你。
【输入】
总共1+n+m行。第一行为两个正整数n和m,n表示序列的长度,m表示陈卓提问的次数。接下来n行,每行一个小写字母,分别表示序列中的n个小写字母。接下来m行,每行一个小写字母c(小写字母c后有且仅有一个空格)和两个正整数k,ans,表示陈卓提问小写字母c第k次出现的位置(保证小写字母c出现的次数不少于k),以及刘天泽的答案ans。
【输出】
总共1行。若刘天泽的答案全对,则输出“AK”,否则输出刘天泽错误的次数。
【输入输出样例1】
index.in index.out
5 2
i
n
d
e
x
n 1 2
x 1 5 AK
【输入输出样例2】
index.in index.out
5 3
y
h
y
a
k
y 2 1
y 1 1
k 1 5 1
【数据范围】
对于60%数据,1≤n≤1000,1≤m≤1000。
对于100%数据,1≤n≤500000,1≤m≤500000,每个字母出现次数不超过50000。

根据
数据得出:cin80,read(快读)100,可见快读是需要的.

猜你喜欢

转载自blog.csdn.net/ronaldo7_zyb/article/details/80959779