- 10
- 0
- 约4.18万字
- 约 21页
- 2019-03-09 发布于湖北
- 举报
HDU 第 11 版解题报告(农夫版)
农夫三拳(drizzlecrj@)
2000 ASCII码排序
题目大意:给定三个字母,按照 ASCII 码从小到大输出。
解题方法:三个字母排序,最简单的方法是进行三次比较,可以先判断 a 和 b ,再判断 a 和 c,使得 a
是最小的数,然后比较 b 和 c,将次小的放在b 位置即可。当然使用任何一种你想使用的排序方法也
是可以的,包括直接插入排序,折半插入排序,链表插入排序,Shell 排序,冒泡排序,快速排序*,
直接选择排序,锦标赛排序,堆排序*,归并排序*,基数排序,桶排序,计数排序等。此外,还可以
选择使用 qsort 或者 std::sort 。(*为需重点掌握算法)
联想:三个数使用基于比较的算法进行排序最少需要的比较次数是 3 次,那么 4 个数呢,5 个数呢,n
个数呢?4 个数的最少比较次数是 5 次,这个也许不难看出,但是 5 个数一般人只能想到 8 次(使用归
并的思想) ,实际上可以 7 次就完成。更多信息请参见《计算机程序设计艺术第三卷》5.3 节中的“极少
比较排序”一节。
5 6
经验谈:在输入数据范围很大(通常 10 或 10 范围) ,且算法时间复杂度为 O(n)或者 O( nlogn )时,使
用 cin 往往会超时,这个时候记得要用 scanf,或者使用更快的 gets 和 getchar 函数。
2001计算两点间的距离
题目大意:给出两个点的坐标,输出两点间的距离。
2 2
解题方法:对于两点(x1,y1),(x2,y2),距离公式为 。
( 1 x 2)x −( 1 y +2)y −
注意点:要注意题目中给的数是整数还是实数。
小知识:对于设置小数末尾的精度,有如下几种方法( 以保留两位小数为例) :C 当中我们使用
printf(“%.2lf”,…) ;C++当中我们可以使用iostream 头文件中的 cout.setf( ios::fixed) 以及cout.precision(2)
来指定,还可以使用 iomanip 中 setiosflags( ios::fixed)和 setprecision(2)来指定。
2002计算球体积
题目大意:给定求的半径,求出求的体积。
4 3
解题方法:使用球的体积公式 πR 。
3
注意点:平常 PI 我们都是取的 acos(-1.0),而这里题目中指定了 3.1415927,比赛的时候并没有指明,
使得许多人 wa 了n 次。
2003求绝对值
题目大意:求一个实数的绝对值。
解题方法:使用 cmath 中的fabs 函数。
注意点:可能有人会想到去自己实现 fabs 函数,需要注意的是浮点数中有-0 的存在,需要额外的判断为0
的情况。浮点数的比较是一门很深的学问。可以参见Bruce Dawson 的一篇文章Comparing floating point
numbers 。关于浮点数的一些更加具体的细节,请见我Blog上翻译的Representation of Integers and
Reals Section I 和Section II。
2004成绩转换
题目大意:根据一个成绩,按照题中的规则,输出对应的等级。
解题方法:使用 if…else…if 或者 switch,可以先将成绩除以 10 再做判断。
2005 第几天?
题目大意:给出一个日期表示,输出它是该年的第几天。
解题方法:使用闰年公式 year%4==0year%100!=0||year%400==0 。
小知识:读取 1986/9/24 这样形式,有以下几种做法:1.读取整行字符串,然后手动分解,使用 atoi
转换为整数;2. 直接用 cin
您可能关注的文档
最近下载
- 景观提升工程景观工程施工组织设计全套范本.doc VIP
- 劳务纠纷应急预案(精选5篇).pdf VIP
- 桥梁施工加固技术规范.docx VIP
- 黑布林阅读初三8《白牙》中文版.pdf
- 深静脉血栓形成的预防及护理试题附答案.docx VIP
- 景观绿化工程施工设计方案.docx VIP
- M-WHYTP-D04-029防腐绝热工程施工质量管理规定0531 (1).pdf VIP
- 汉荣达HRD-C919 中文操作说明书.pdf
- DB11∕T 3006-2017 车用气瓶电子标签应用管理规范.docx VIP
- DB11∕T 3008.4-2018 人力资源服务规范 第4部分:信息网络服务.docx VIP
原创力文档

文档评论(0)