------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
当数据量过大时,用 cin 和 cout 读写较慢,可以用 scanf 和 printf 进行格式化输入输出
换行一定要用 \n 代替 endl 啊
二分用 (l+r)/2 找中间数是个不好的习惯,可能会导致 l+r 数溢出导致变为负数,随后除以二会 mid 也是一个错误的负数索引,从而导致数组越界访问或程序崩溃,可以用 int mid=l+((r-l)>>1),不过位运算的优先级没加减乘除的优先级高,所以一定要加括号 牢发竟然没教我们
#define int long long 有时候也是个好东西,不过你 main 就要改 signed 类型了
再难的题你哪怕不会,良心(吗?)的出题人也会给你 30% 左右的分让你暴力的
观察完全二叉树,其最后一个结点编号为 nnn ,其父亲结点的编号为 n/2n/2n/2 ,所以从 n/2n/2n/2 开始的结点都是叶子结点,因此结点数为 nnn 的完全二叉树其叶子结点个数为 n−n/2n-n/2n−n/2 个
二维前缀和数组
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
二维前缀和求从 (x1,y1)(x1,y1)(x1,y1) 到 (x2,y2)(x2,y2)(x2,y2) 的元素和
ans=s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]
虽然但是,似乎没啥用 QAQ