输入输出优化(黑科技)

正常版,输入输出优化比较正常,无论是scanf/printf/cin/cout都可以混用

用法:int x=gi; pint(x); 类似这样。

#define gc getchar()
int g_i()
{
    int tmp=0; bool fu=0; char s;
    while(s=gc,s!=‘-‘&&(s<‘0‘||s>‘9‘)) ;
    if(s==‘-‘) fu=1; else tmp=s-‘0‘;
    while(s=gc,s>=‘0‘&&s<=‘9‘) tmp=tmp*10+s-‘0‘;
    if(fu) return -tmp; else return tmp;
}
#define gi g_i()
#define pob
#define pc(x) putchar(x)
namespace ib {char b[100];}
inline void pint(int x)
{
    if(x==0) {pc(48); pc(10); return;}
    if(x<0) {pc(‘-‘); x=-x;}
    char *s=ib::b;
    while(x) *(++s)=x%10, x/=10;
    while(s!=ib::b) pc((*(s--))+48);
    pc(10);
}

丧病版,输入优化采用fgets,不能与cin/scanf混用,如果需要读入其他类型可能需要手写。

输出优化的行为有一些奇怪,它会把输出缓存到一定数量之后一起输出,可以用pob把缓存中的字符输出,调试时可能需要注意一下(比如多个询问的题目答案可能会在最后一起输出)

用法也是:int x=gi; pint(x); 如果需要把缓存中的内容输出清空就用pob;

输入输出缓存大小可以用BUFSIZE这个宏来控制。

#define BUFSIZE 300000
namespace fib {char b[BUFSIZE]={},*f=b;}
#define gc ((*fib::f)?(*(fib::f++)):(fgets(fib::b,sizeof(fib::b),stdin)?(fib::f=fib::b,*(fib::f++)):-1))
int g_i()
{
    int tmp=0; bool fu=0; char s;
    while(s=gc,s!=‘-‘&&(s<‘0‘||s>‘9‘)) ;
    if(s==‘-‘) fu=1; else tmp=s-‘0‘;
    while(s=gc,s>=‘0‘&&s<=‘9‘) tmp=tmp*10+s-‘0‘;
    if(fu) return -tmp; else return tmp;
}
#define gi g_i()
namespace fob {char b[BUFSIZE]={},*f=b,*g=b+BUFSIZE-2;}
#define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)
#define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)
struct foce {~foce() {pob; fflush(stdout);}} _foce;
namespace ib {char b[100];}
inline void pint(int x)
{
    if(x==0) {pc(48); pc(10); return;}
    if(x<0) {pc(‘-‘); x=-x;}
    char *s=ib::b;
    while(x) *(++s)=x%10, x/=10;
    while(s!=ib::b) pc((*(s--))+48);
    pc(10);
}

在许多oj上都交过,正确性应该没什么问题。

时间: 2024-11-09 10:15:13

输入输出优化(黑科技)的相关文章

[黑科技]常数优化的一些技巧

感谢wys和小火车普及这些技巧qwq 这篇文章大概没什么营养 我们来看一道十分简单的题目: 设n=131072,输入两个长度为n的数列和,要求输出一个长度为n的数列. 其中,. 首先我们来讲讲这题怎么做. 如果数据是随机的,那么有一种神奇的做法:在a和b中分别挑出最大的p个元素,对于每个i暴力枚举每个p进行更新,这样的复杂度是O(np)的,正确性我不会分析= = 那么数据不是随机的...那么估计没有什么快速的算法,不如暴力! 以下的运行时间均为在我的渣渣笔记本中测试得到,仅供参考.测试环境Ubu

【黑科技】读写优化

读入优化: inline int read() { char ch; bool flag = false; int a = 0; while(!((((ch = getchar()) >= '0') && (ch <= '9')) || (ch == '-'))); if(ch != '-') { a *= 10; a += ch - '0'; } else { flag = true; } while(((ch = getchar()) >= '0') &&am

2017黑科技趋势最具看点的十大新品

腾讯数码讯(Human)作为一年一度的全球消费电子市场风向标,今年同样在拉斯维加斯举办的CES 2017消费电子展,依然吸引了一大批全球各个领域的厂商参展,从科技巨头到初创小团队.从传统汽车厂商再到家电企业,似乎所有能与科技沾边的公司都希望能在CES 2017上好好展示一次自己的风采. 其实每年的CES都有一些明星产品给我们留下深刻的印象,今年的也不例外.而这些明星产品不仅仅只是单单一款产品,更是代表了各自行业在进入到2017年之后的一个发展趋势和方向.而就将这样的变化能否成为未来的主流.或只是

今年黑科技趋势最具的五个看点

CES 2017年人工智能引爆全球最火黑科技盛会 CES 2017 1月5日-8日在美国拉斯维加斯举行,数千家企业.几十万人将参与到这次科技的狂欢秀中.本文为埃森哲技术总监带来的关于本年度CES 的5大看点.他认为:人工智能将统治本年度的CES,变得无处不在.另外,他还分析了智能助理.物联网安全.虚拟现实等多个领域在本届大会上的表现. 2017 年国际消费电子展(CES 2017)将于1月5号拉开帷幕,在这个荒漠之城举办为期5天的展会,保守估计会吸引超过177000名参会者. 这也是一年之中唯一

试读—增长黑客,创业公司必知的“黑科技”

概述 刚一看到书名,最引起注意的是黑客两个字,那个带着神秘色彩,让无数程序员羡慕嫉妒恨的角色.但仔细一看,增长黑客,创业公司必知的"黑科技",是讲公司如何以切实的依据.低廉的成本.可控的风险来达成用户增长.活跃度上升.收入额增加等知识及案例的,这对于初创公司又没有充足的资金去燃烧以改变用户习惯的情况无疑是雪中送炭.指北之针. 什么是增长黑客? 本书适合哪些读者? 增长 靠原始积累实现增长的时代已经过去,也不适合互联网.移动互联网.互联网+的模式.我们经常能看到类似的新闻"某公

黑科技玩出跨界营销新姿势,泡单词携手百果园深化品牌影响力

1月10日起,广州.佛山.珠海三地的百果园门店,被家长群体给包了场.原因只是其和泡单词联手推出特惠活动,买水果就送科技感十足的AR互动绘本. 一个黑科技就能搅动无数家长的心?没这么简单. 又一次跨界营销?关键在于实现场景及流量互通 据悉,百果园和泡单词都是第一次尝试跨界营销. 一个生鲜.一个教育,从线下到线上,这样的一次活动完全是一场标准的互联网+状态下的跨界营销,亦是近期营销领域从饥饿营销.参与感营销等老套路中跳脱出来,形成的主流营销模式. 就在此前的2016年圣诞节,一嗨租车就和NBA进行过

5分钟了解MySQL5.7对in用法有什么黑科技

MySQL5.7对in用法有什么黑科技 构建测试环境 Part1:创建测试数据库 [[email protected] ~]# mysql -uroot -p Enter password:  Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.15-log MySQL Community Server (GPL) Copyright

ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Practice Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operation 1: AND opn L R Here opn, L and R are integer

市值超越高通后,NVIDIA用黑科技抢占苹果高端笔记本市场

(上图为NVIDIA CEO黄仁勋在2017台北Computex上介绍Max-Q设计) 2011年10月21日,NVIDIA CEO黄仁勋在AsiaD大会上表示,高通是该公司最为直接的竞争对手,苹果公司是间接竞争对手.6年后,在2017年5月30日的台北电脑展Computex期间,NVIDIA的市值超过了高通,当天NVIDIA的总市值达854.70亿美元,而高通的总市值则是851.01亿美元. 在第二天接受记者采访的时候,黄仁勋表示了一下惊讶:"是吗?"接着就继续讲在本次台北Compu