HDOJ日记1

(2015/9/21)

HDOJ 1231 最大连续子序列

    求最大连续子序列,并输出子序列首位元素。

2015/9/22

HDOJ 3743 Frosh Week

    归并排序求逆序对数

HDOJ 4911 tInversion

    逆序数的性质:如果一个序列的逆序数大于0,则必定存在两个相邻的数,交换后逆序数减1。

    例如序列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条路。

并查集参考:

http://wenku.baidu.com/link?url=7OMc83QJhlT5lEY7Bc0RiUO5x4MzNY45TcckKZdQZ5F5UmFwQWFVO_nE3dVszPJqUTDgecWFBTsDelkX6kNz9ncg4qDgwbsUPcf6TEoYZ9e

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)最后对数组中剩下的操作数相加。


你可能感兴趣的:(HDOJ日记1)