树状数组超时,求助qaq(

P3374 【模板】树状数组 1

看似大佬70的提交并没有用快读,推荐用`scanf`和`printf`再试试
by B_1168 @ 2020-05-16 02:23:59


@[xixi_bang](/user/322896) 您的快读确实有问题。 ```cpp inline int read(){ register int a=0,f=1;register char c; while((c=getchar())<'0')if(c=='-')f=-1;; while(c>='0')a=a*10+(c^48),c=getchar(); return a*f; } ``` 拿这个快读可以满分
by pocafup @ 2020-05-16 02:38:25


@[xixi_bang](/user/322896) 您不能自己测试一下快读吗? ```cpp x=(x>>3)+(x>>1)+c-'0'; ``` 这一行明显有问题,应该是左移`<<`,如果写快读的时候不确定的话就不要写了,直接写`x*10`不也行吗?
by Diamiko @ 2020-05-16 06:16:05


@[xixi_bang](/user/322896) 我通常这么写 ```cpp inline int read() { char c;int res(0),flag(1); for(;!isdigit(c);c=getchar())if(c=='-')flag=-1; for(;isdigit(c);c=getchar())res=(res<<1)+(res<<3)+(c^48); return res*flag; } ```
by Diamiko @ 2020-05-16 06:19:15


事实上, ```cpp x=(x>>3)+(x>>1)+c-'0'; ``` 会比 ```cpp x=x*10+c-'0'; ``` 更慢一点。
by Aw顿顿 @ 2020-05-16 08:11:01


@[B_1168](/user/62562) 我发现快读有问题,就没用了hhhh蟹蟹~
by xixi_bang @ 2020-05-16 09:16:14


@[xixi_bang](/user/322896) 推荐输出要么也写一个快输,要么用`printf()`,进一步压缩用时qwq
by B_1168 @ 2020-05-16 10:42:00


@[B_1168](/user/62562) 快输是什么啊,我没有查到诶qaq
by xixi_bang @ 2020-05-16 10:54:17


@[xixi_bang](/user/322896) ```cpp void write(int a){ if(a>=10)write(a/10); putchar(a%10+'0'); } ``` 类似这个东西 ~~因为涉及递归,复杂度不做保证~~
by B_1168 @ 2020-05-16 11:00:18


@[B_1168](/user/62562) 哦哦好滴!蟹蟹!
by xixi_bang @ 2020-05-16 13:01:17


|