今日份竞赛技巧
读写文件
提高输入速度
1.用scanf();
2.用cin和cout,在之前加两行代码:
3.手搓手写快读(最快!)
注意,这一段代码仅用于输入int类型
随机生成数(最快!)
用万能头,因为不知道是哪个头文件里的
用途:对拍时用于生成随机数据
比赛中想到思路之后怎么做:
1.只能敲暴力(下下策但是极其重要)
2.先敲正解,调试过样例,文件过大样例
3.写暴力对拍,生成随机测试数据,有错则改
4.检查freopen()
二分查找
整数二分
模板:
UPPER_BOUND()和LOWER_BOUND()
头文件:algorithm
lower_bound(begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end
upper_bound(begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end
若想要得到这个数字的下标而不是它的地址,需要减去一个begin
小数二分(以计算平方根近似值为例)
反码与补码
正数
原码=反码=补码
负数
反码=原码除符号位全部取反
补码=反码+1
用法
正负数计算全部转化成补码,计算完转回原码