九度OJ小结
1. 高精度问题
可参考题目 题目1137:浮点数加法 http://ac.jobdu.com/problem.php?pid=1137
对于高精度问题可以考虑使用结构体。上述为浮点数加法,因此该结构体可以具有保存小数部分以及整数部分的成员变量,使用数组进行保存。于此同时还要记录下所保存数据的长度,因此还应当有两个int变量,保存整数部分长度和保存小数部分长度。
在C++中对运算符进行重载操作。
运算符函数定义的一般格如下所示: <返回类型说明符> operator <运算符符号>(<参数表>)
{ <函数体> } 成员函数运算符 运算符重载为类的成员函数的一般格式为:
<函数类型> operator <运算符>(<参数表>) { <函数体> }
() 双目运算符重载为类的成员函数时,函数只显式说明一个参数,该形参是运算符的右操作数。 () 前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。 () 后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。 调用成员函数运算符的格式如下: <对象名>.operator <运算符>(<参数>) 它等价于 <对象名><运算符><参数> 例如:a+b等价于a.operator +(b)。一般情况下,我们采用运算符的习惯表达方式。 运算符重载为类的友元函数的一般格式为: friend <函数类型> operator <运算符>(<参数表>) { <函数体> } 当运算符重载为类的友元函数时,由于没有隐含的this指针,因此操作数的个数没有变化,所有的操作数都必须通过函数的形参进行传递,函数的参数与操作数自左至右一一对应。 调用友元函数运算符的格式如下: operator <运算符>(<参数1>,<参数2>) 它等价于 <参数1><运算符><参数2> 例如:a+b等价于operator +(a,b)。 两种重载形式的比较 在多数情况下,将运算符重载为类的成员函数和类的友元函数都是可以的。但成员函数运算符与友元函数运算符也具有各自的一些特点: () 一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。 () 以下一些双目运算符不能重载为类的友元函数:=、()、[]、->。 () 类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。 () 若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。 () 若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数。 () 当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一 个类对象(或者是对该类对象的引用)。如果左边的操作数必须是一个不同类的对象,或者是一个内部 类型的对象,该运算符函数必须作为一个友元函数来实现。 () 当需要重载运算符具有可交换性时,选择重载为友元函数。
重载操作解析
对于浮点数加法而言,结果的输出需要注意前导0的消除。
2. 进制转换问题
可参考题目 题目1080:进制转换 http://ac.jobdu.com/problem.php?pid=1080
对于进制转换问题,通过博客http://blog.csdn.net/jaster_wisdom/article/details/52107785 进一步了解具体的方法。
其中的方法算是从笔算转换进制转化来的,但是这个笔算的过程有那么点复杂。如果仅仅是举一个10进制到2进制的转换,其中的规律好像不是很清晰。需要注意的是在其他进制转换过程中向下余数不再是10倍的关系而是原来进制m的倍数,同时除数是进制n。
按照上述的笔算方法,得到的进制结果依次是从最低位到最高位。也就是保存的结果如果需要输出的话,应该倒序输出。
另外对于题目 题目1208:10进制 VS 2进制 http://ac.jobdu.com/problem.php?pid=1208
int cmp(const void *a, const void *b){
int lena = (int)strlen((char *)a);
int lenb = (int)strlen((char *)b);
if(lena == lenb)
return strcmp((char *)a, (char *)b);
else
return lena < lenb;
}
另外对于qsort函数的其他模板可以参考博客 http://blog.csdn.net/yuanjilai/article/details/7348345
九度 OJ1109 连通图; http://ac.jobdu.com/problem.php?pid=1109
九度 OJ1445 How Many Tables?; http://ac.jobdu.com/problem.php?pid=1445
- 九度 OJ1444:More is better http://ac.jobdu.com/problem.php?pid=1444
九度 OJ1446 Head of a Gang; http://ac.jobdu.com/problem.php?pid=1446
对于1446需要考虑的问题有并查集问题,姓名与Id对应问题(使用map存储),条件判断等问题。
可以参考博客 http://blog.csdn.net/u013027996/article/details/17101513
OJ1446 基本思路:
1、如果要使用数组,需要将字母转换为数字,当然最后输出的时候要转换回去。
2、并查集,读取两个name的时候,就合并。
3、求父节点,并且算出集合个数。
4、对每个集合做计算,求成员个数。符合条件,保留,不符合条件,忽略。
5、按照字母序输出结果。
九度OJ小结的更多相关文章
- 九度OJ小结2
由于安排问题,距离上次小结时间已经过去很久.导致这次小结的内容很多. 本次小结涉及到主要内容如下所示: 基于并查集操作的最小生成树问题(prime算法或者kruskal算法): 最短路径问题(Floy ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ 1502 最大值最小化(JAVA)
题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)
题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...
- 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
- 九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
随机推荐
- iOS : 判断运行设备类型是否是iPad
以下代码由 CocoaChina 版主 “cclv” 分享,可用于判断应用运行的设备是否是 iPad #define isPad (UI_USER_INTERFACE_IDIOM() == UIUse ...
- glibc中fork系统调用传参
因为想跟踪下在新建进程时,如何处理新建进程的vruntime,所以跟踪了下fork. 以glic-2.17中ARM为例(unicore架构的没找到),实际上通过寄存器向系统调用传递的参数为: r7: ...
- MongoDB 之 Capped Collection
MongoDB 支持 Capped Collection,一种固定大小的集合,当集合的大小达到指定大小时,新数据覆盖老数据,MongoDB Replica set 中的 oplog 就是 Capped ...
- level 1 -- unit 2 - what 引导的特殊疑问句
特殊疑问句 what 引导的特殊疑问句 常见结构如下: 1. what be sb/sth? 1.1 如 谓语动词是单数is what is your phone number ? what is y ...
- V8学习资源
http://wenku.baidu.com/link?url=7mk6ib9IJ-1K_-bFVZ-fXXo2nbI3jOJ3cnhr3XC3b08fPOKkc9v8vSAd-DgNMJZ2vdjg ...
- php下webservice使用总结
基于thinkphp3.2的 1.修改php配置 php.ini extension=php_soap.dll soap.wsdl_cache_enabled=0 2.soap有两种模式 wsdl和 ...
- WebGL 颜色与纹理
1.纹理坐标 纹理坐标是纹理图像上的坐标,通过纹理坐标可以在纹理图像上获取纹理颜色.WebGL系统中的纹理坐标系统是二维的,如图所示.为了将纹理坐标和广泛使用的x.y坐标区分开来,WebGL使用s和t ...
- VS2008 远程调试器未成功安装,没法使用?
Win7 64位系统,安装VS2008后,想使用远程调试功能,结果不能使用! 在VS2008的安装包下有个 Remote Debugger 的文件夹,在里面找到 x64 的 rdbgsetup.exe ...
- 协助CIO成功实施ITIL
如今,企业在日渐复杂的IT基础架构和应用服务上所做出的投资越来越庞大.有数据显示,财富500强在IT上的平均开支已达到了3亿5千万美元. 为了清楚地认识IT投资所能带来的价值,企业应考虑改善服务管理流 ...
- mysql中已经存在某个库中有大小写的表,将lower_case_table_names由0改为1对已经存在的表是否有影响?
需求描述: 今天遇到了修改lower_case_table_names参数的问题,想了下,如果原来里面有表,表名有大小写的, 如果将lower_case_table_names从默认的0改为1之后,那 ...