首先要确定题目是单点测试还是多点测试,多数为单点测试。
本次内容涉及结构体排序(1004)、进制转换(1022)、人数统计(1038)括号内传送门
结构体排序---关键在熟练掌握sort方法
https://www.cnblogs.com/AlvinZH/p/6784862.html这里对sort有详细的介绍和实例。
需要注意的地方:这类题目中可能会要求二次排序,即学生成绩相等时,以姓名字典序输出。这种情况在cmp中多加一步判断即可:
bool cmp(stu a , stu b ){
if(a.scord!=b.scord)
return a.scord<b.scord;
return a.id<b.id;
}
进制转换---关键在了解进制转换的步骤
十进制数转X进制,步骤就是模X取余,再对商模X取余,如此反复直到最后的商小于X,再倒序把余数依次排列即可。以十转十六为例:
1421 除以 16 , 商 88, 余数 13,取 13 (16进制 d)
88 除以16, 商 5 余数 8,取 8
5 除以 16, 商 0, 余数 5,取 5
结果:16进制 0x58d
需要注意的地方:对于题目给定的A 和 B (≤2^30−1),两点补充:
- 这是在int范围内的,但其他情况下可能出现溢出,比如A*B这个家伙就很危险;若给定A 和 B (≤2^31-1),则A+B也可能溢出,int范围为-2^31~2^31-1。此时需要用到long long保存A+B的值,这一点很重要。
- 参数在1*10^10以内,可以用int,超过这一范围就要用long long(-2^64~2^64-1)。
人数统计---关键在想到哈希
在需要统计某参数的个数的题目中,如果这个参数数量级不是特别大,把这个参数当作下标,哈希一下是最简单有效的方法。