(2015/9/21)算法
HDOJ 1231 最大连续子序列数组
求最大连续子序列,并输出子序列首位元素。
函数
(2015/9/22)url
HDOJ 3743 Frosh Weekspa
归并排序求逆序对数3d
HDOJ 4911 tInversioncode
逆序数的性质:若是一个序列的逆序数大于0,则一定存在两个相邻的数,交换后逆序数减1。
orm
例如序列1 2 3 4 5,若要插入一个数使逆序数大于0,不管插入那里都存在这样相邻的数。
排序
(2015/9/23)队列
HDOJ 1009 FatMouse' Trade
背包问题,贪心算法
(2015/10/13)
HDOJ 2501 Tiling_easy version:网格长度n每加1,对新增长的2 * 1网格的方法进行分类,便可推导出公式F(n);
HDOJ 2502 月之数:也是要推导出公式F(n)。二进制数的位数每增长1位,增长的最高位必须是1,而后从左往右依次讨论每一位是1或0的状况。
F(n) = F(n - 1) + F(n - 2) + 。。。 + F(1) + 2 ^(n - 1);
2 ^(n - 1)表示最高位的1有几个。
HDOJ 2503 a/b + c/d:求最大公约数,展转相除法的代码:
int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); }
HDOJ 2504 又见GCD:以c必定是b的倍数,对c进行枚举。
(2015/10/14)
HDOJ 1228 A + B:C++关联容器map的使用。
HDOJ 1232 畅通工程:实现并查集。此题中有几个连通份量,就还要再修n - 1条路。
并查集参考:
HDOJ 1236 排名:
1)C++,使用结构体做为优先队列的元素。
2)scanf_s读入字符串时,须要指定最大读入长度。
3)字符数组的比较使用strcmp函数。
(2015/10/17)
HDOJ 1230 火星A+B:先读出火星数中的每一位,存放在数组中。反转数组。从个位开始算。反向输出结果数组。
(2015/10/18)
HDOJ 1237 简单ji算器:(ji算只含 +, -, *, / 的非负整数表达式)
1)用数组保存操做数。
2)若读到*,/则进行一次运算。
3)若读到+,则直接将操做数存入数组。
4)若读到-,则对操做数取负后存入数组。
5)最后对数组中剩下的操做数相加。