经过计算,getchar相对于scanf()的速度有大概6-7倍的优化,而使用fread()则可以达到约9倍的优化。 那么,对于fread(二)呐? 起初我对它不抱有信心:遍历文件需要时间,我把长度规定好肯定比你快啊。 事实证明差不多,速度略慢于fread(一)。 测试1e7*5 *7,三种fread对比如下 19.067000 16.611000 17.084000 完整测试...
16 17 18 19 20 inlinecharnc() { staticconstintBS = 1 << 22; staticunsignedcharbuf[BS],*st,*ed; if(st == ed) ed = buf +fread(st=buf,1,BS,stdin); returnst == ed ? EOF : *st++; } //#define nc getchar inlineintread() { charch; intres = 0;boolflag = 0; while(!i...
BIT区间修改+单点查询和求和的bit是一模一样的(包括add,sum) 只不过是你使用函数的方式不一样: 使用区间的时候,比如[a,b]区间+1,就是add(a,1); add(b+1,-1); 之后sum(i)查的是i点的值,是一个i点的值,不是区间!! 另外,主函数中fread()必须调用2句话,因为它是缓冲的,所以不可以边输入边测试,...