博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C/C++快读(快速读入)有多——安全AC
阅读量:5017 次
发布时间:2019-06-12

本文共 1699 字,大约阅读时间需要 5 分钟。

在一些算法题目中中,有的程序会被卡常(数),就是说,程序虽然渐进复杂度,(通俗来讲:算法的时间复杂度)可以接受,但因为算法本身的时间常数过大,导致程序在一些算法竞赛中超时。这是,快读就显得尤为重要了。

当然,如果程序算法本身就不高效,快读就更加重要了,可以让一些暴力程序获得更多的测试点分数,如果数据不大甚至能AC,此时快读就是“得分法宝”

快速读入可以让大家的输入更快,这里做了一个测试:快读究竟有多快?(编译器dev-c++ 5.5.3,标准模式(非debug))

1 #include 
2 #include
3 #include
4 #define LOOP 2 //循环次数 5 #define DATA 100000 //数据规模 6 struct dat{ 7 int i,s,c;dat(int a=0,int b=0,int k=0){i=a,s=b,c=k;} 8 }dats[100+1]; 9 inline int Readi(){
//快读 10 int x;11 int fh=1;12 char a=getchar();13 while('0'>a || '9'
>t; 37 }38 int main(){39 freopen("out.txt","a",stdout);40 printf("数据规模:%d 循环次数:%d 单位:ms\n",DATA,LOOP);41 freopen("in.txt","r",stdin);//读入数据文件(只读)42 for(int k=1;k<=LOOP;++k){43 freopen("out.txt","a",stdout);44 freopen("in.txt","r",stdin);//读入数据文件(只读)45 TryPrint();clock_t p=clock();46 TryReadi();clock_t i=clock();47 TryReads();clock_t s=clock();48 printf("快读:%u\n",i-p);49 printf("scanf输入:%u\n",s-i);50 dats[k]=dat(i-p,s-i,0);51 }52 double sum=0.0;for(int k=1;k<=LOOP;++k)sum+=dats[k].i;printf("快读平均:%.0f\n",sum/LOOP);53 sum=0.0;for(int k=1;k<=LOOP;++k)sum+=dats[k].s;printf("scanf平均:%.0f",sum/LOOP);54 return 0;55 }
View Code

 

快速读入代码:大家可以自己修改,在自己电脑上测试(注意:cin这里我在测试时出现了读入都是零的问题,导致时间过少,求各位大神解决)

测试结果

数据规模:1000000 循环次数:5 单位:ms

快读:50
scanf输入:1113
快读:50
scanf输入:1130
快读:58
scanf输入:1116
快读:52
scanf输入:1168
快读:51
scanf输入:1130
快读平均:52
scanf平均:1131

由此得,快读比scanf快了很多。所以大家在读入较大数据规模时,应尝试快读。

在我的测试中,快写就没有快读那么神奇了,反而比scanf/printf更慢,可能是由于进行了过多的除法和取余数

转载于:https://www.cnblogs.com/cdsidi/p/11269232.html

你可能感兴趣的文章
MVC
查看>>
第二百三十五节,Bootstrap栅格系统
查看>>
《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #21FUSE
查看>>
SQLite剖析之编程接口详解
查看>>
Elasticsearch最佳实践之分片使用优化
查看>>
Java入门(6)
查看>>
更具体的描述JNI
查看>>
数据库——SQL-SERVER练习(6) 数据库安全性
查看>>
Frameset 两页面互调控件技术案例
查看>>
ruby 构建API接口流程代码
查看>>
ASP.NET没有魔法——第一个ASP.NET应用《MyBlog》
查看>>
java web 插件式开发
查看>>
软件工程周总结12
查看>>
DDL对表的操作
查看>>
flutter key
查看>>
hibernate之关系映射上
查看>>
Cinder错误解决方案
查看>>
activemq的配置和使用范例
查看>>
CSS3高级
查看>>
CSS Satyr v1.2(CSS Sprites生成工具)
查看>>