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 

      需要考虑大数的保存问题以及进位操作。
  
       需要注意的是这里的进位只有加1操作,因为是10进制转2进制。如果是其他进制的话,需要使用 ans[j]%n(n为转换目标进制)
       
       这里说到了大数问题,这里的N的阶乘问题也顺带提一下。
       可参考题目  题目1076:N的阶乘   http://ac.jobdu.com/problem.php?pid=1076
      
3. 二分求幂问题
      计算pow(n,k) = n^k 可参考题目  题目1441:人见人爱 A ^ B http://ac.jobdu.com/problem.php?pid=1441
      将k按照二进制展开,按照从二进制最低位到最高位进行幂乘操作。
      
 4. 大整数排序问题
      可参考题目 题目1190:大整数排序 http://ac.jobdu.com/problem.php?pid=1190
 
        无符号大整数进行非递减排序时,可以通过比较长度决定数字的大小。如果长度相同,那么可以调用函数strcmp函数
    设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
    另外在保存大整数的时候采用二维char数组。
        这里的排序可以采用qsort,需要手写cmp函数。

    其中本题目的函数模型如下所示:

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

 5. 并查集操作问题
 
     九度 OJ1012 畅通工程   http://ac.jobdu.com/problem.php?pid=1012

      九度 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小结的更多相关文章

  1. 九度OJ小结2

    由于安排问题,距离上次小结时间已经过去很久.导致这次小结的内容很多. 本次小结涉及到主要内容如下所示: 基于并查集操作的最小生成树问题(prime算法或者kruskal算法): 最短路径问题(Floy ...

  2. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  3. 九度OJ 1502 最大值最小化(JAVA)

    题目1502:最大值最小化(二分答案) 九度OJ Java import java.util.Scanner; public class Main { public static int max(in ...

  4. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  5. 九度OJ 1500 出操队形 -- 动态规划(最长上升子序列)

    题目地址:http://ac.jobdu.com/problem.php?pid=1500 题目描述: 在读高中的时候,每天早上学校都要组织全校的师生进行跑步来锻炼身体,每当出操令吹响时,大家就开始往 ...

  6. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1531 题目描述: 小虎是游戏中的一个国王,在他管理的国家中发行了很多不同面额的纸币,用这些纸币进行任意的组合可以在 ...

  7. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述:     省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...

  8. 九度OJ 1371 最小的K个数 -- 堆排序

    题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...

  9. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

随机推荐

  1. asp.net mvc中配置路由默认值(Area中)

    public class RouteConfig { ] { "Best.Site.Areas.BestPalace" }; public static void Register ...

  2. 7款HTML5精美应用教程 让你立即爱上HTML5

    你喜欢HTML5吗?我想下面的这7个HTML5应用一定会让你爱上HTML5的,不信就一起来看看吧. 1.HTML5/jQuery雷达动画图表 图表配置十分简单 之前我们介绍过不少形形色色的HTML5图 ...

  3. DataTable内容导出为CSV文件

    CSVHelper.cs内容: using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  4. java中字符串太长,怎么自动换到下一行

    直接在中间代码出按回车

  5. VC++ 链接错误LINK : fatal error LNK1104: cannot open file "*.lib"

    问题描述: 运行VC++编译时经常出现 Linking… LINK : fatal error LNK1104: cannot open file “*.lib” Error executing li ...

  6. Ulua_toLua_基本案例(六)_LuaCoroutine2

    Ulua_toLua_基本案例(六)_LuaCoroutine2 using UnityEngine; using System.Collections; using LuaInterface; pu ...

  7. UDP通信-UdpClient

    static void Main(string[] args) { Console.WriteLine("发送端"); byte[] buffer = System.Text.En ...

  8. NetBpm 安装篇(1)

    尊重别人劳动成果 转载注明出处:http://www.cnblogs.com/anbylau2130/p/3875718.html 官方主页 http://www.netbpm.org/docs/in ...

  9. Java md5加密 控制台传入与web传入参数 结果不匹配 || 相同字符串加密结果不同,如何保证JAVA MD5加密结果在不同的环境下都相同

    开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD ...

  10. ios开发之--打印bool值

    eg:NSLog(@"Hello,objective-c!");   @表示应该当作NSString字符串来处理. NSLog相当于C语言中的printf,常用于文字输出 NSLo ...