学无止境

冲啊!!

HDU 1394 解题报告 线段树 单点更新

求逆序对常用方法是归并排序,当然线段树也可以解决,但是空间复杂度就会更大。 这题两者都可用。因为只需要第一次求出逆序对数即可,后面的排列都可以推出来。 具体怎么推? 假设 sum 是第一次求出来的逆序对。 第一次排列是 1 3 6 9 0 8 5 7 4 2 那么,第二次就会是 3 6 ...

2015-07-16 19:37:36

阅读数:1311

评论数:0

HDU 1754 解题报告 线段树 单点更新

线段树入门题,单点更新。每个结点存储两个孩子最大者即可。 //线段树单点更新,完全二叉树解法 #include #define MAXN 200000 #define lson rt<<1 #define rson rt<<1|1 int top[MAXN * 4 ...

2015-07-15 10:38:30

阅读数:1290

评论数:0

HDU 1166 解题报告 线段树

这是一题线段树的入门题,主要是点更新。 编码用的是完全二叉树,即数组,用链表会超时。其次用 p #include #define maxn 50000 //4倍大小是一个合适的值 int ns[maxn * 4 + 100]; int nums[maxn]; //完全二叉树存储区间树 ...

2015-07-14 23:25:01

阅读数:1321

评论数:0

HDU 3294 解题报告 Manacher 算法

题目意思: 对输入的字符串做两步处理,第一步先按要求转换。第二步在转换后的字符串中找出最长的回文子串。 最长回文子串可以用 Manacher 算法解决。参考这篇

2015-07-03 16:10:09

阅读数:1309

评论数:0

HDU 1280 解题报告 第 K 大

求第 K 大的一道题,题目意思很直白,数据也比较水,没有负数。所以可以直接用计数排序解决。 代码: #include #define MMAX 5003 #define NMAX 3000 int count[MMAX * 2]; int N[NMAX]; int main() ...

2015-07-01 07:30:09

阅读数:1199

评论数:0

HDU 1232 解题报告 并查集入门

题目意思: 能连通的城市放置到同一个集合中,最后输出集合的个数减一即可。

2015-06-28 21:49:02

阅读数:1282

评论数:0

HDU 3573 解题报告

这题需要注意,75被裁剪之后所剩余不能用于下一次。 三种票: 28 + 20 * 2 32 + 20 * 2 20 * 3 28 * 2 32 * 2 28 + 32 先用完长度20的,用它去与28或32组合,然后,再根据长度20所剩的大小去计算。 代...

2015-06-26 20:58:15

阅读数:1330

评论数:0

HDU 5272 解题报告

这是一道 bestcoder round45 的1001题。 简单题,找出二进制中连续的1有多少个就可以了。代码链接:HDU 5272

2015-06-21 11:01:01

阅读数:1370

评论数:0

HDU 3342 解题报告

这是一题简单的判断有向图是否有环。 参考《算法导论》22章里用白、灰、黑三色标记结点的方法,在深搜的时候只要发现下一个结点是灰色的就说明有环。代码链接:HDU 3342 用 dfs 解题还可以用拓扑做此题。 代码链接:HDU 3342 用拓扑解题

2015-06-18 21:46:19

阅读数:1249

评论数:0

HDU Count 101 解题报告

题目意思: 找出所有不含有“101”子串的个数这题可以用 DP。 用 DP[i]代表长度为 i 时的不含有“101”子串的个数。 观察可以发现,DP[i] = 2*DP[i-1] - 以“10”结尾的 DP[i-1]个数。 而 以“10”结尾的 DP[i-1]个数 是 以“0”结尾的 DP...

2015-06-14 21:32:46

阅读数:1201

评论数:0

HDU 1025 解题报告

这是一道 LIS (最长升序子序列)的问题。 这题是不需要考虑元素重复的情况。 数据比较大,需要用 O(nlogn)才能解题。 注意输出有 load和 loads 的坑。。。代码链接:HDU 1025

2015-05-22 23:19:01

阅读数:1448

评论数:0

HDU 2046 解题报告

这是一题简单的递推题,可以用 dp 解题。递推公式: F(i) = F(i-1) + F(i-2)需要注意这题50时会爆 int。所以用__int64代码链接:HDU 2046

2015-05-19 15:55:13

阅读数:578

评论数:0

HDU 2602 解题报告

题目意思: 这是一道无变型的经典基础01背包问题。递推公式: F(i, j) : i 个骨头, j 的体积限制时的背包的最大价值 V[i] : 第 i 个骨头的体积 N[i] :第 i 个骨头的价值 F(i, j) = max{F(i-1, j), F(i-1, j-V[i]) + N[...

2015-05-18 07:51:47

阅读数:491

评论数:0

hdu_2040_亲和数_解题报告

题目出处 简单题 思路: 首先你得知道什么亲和数, 了解清楚之后,那就用最直接的想法解题:分别对两个数求出各自所有的真约数,然后相加对比 关键代码: // 返回1是YES, 反之是NO int fun(long a, long b) { int i; long ...

2013-04-24 22:19:07

阅读数:881

评论数:1

hdu_2039_三角形_解题报告

题目出处 简单题 思路: 根据 a + b > c ; c + a > b ; c + b > a ;  如果上述三条式子都成立则为三角形 关键代码: double a[3]; if (a[0]+a[1]>a[2] && a[1]...

2013-04-09 15:42:48

阅读数:750

评论数:0

hdu_2033_人见人爱A+B_解题报告

题目出处 简单题 思路: 就是两个时间的叠加,注意 分 和 秒 需要满60进1,而 时 是不断叠加上去的 所以解法就着重在 分 和 秒 的处理,用 / 和 % 运算符即可 关键代码: am += bm, as += bs, ah += bh; am += as / 60; as...

2013-04-04 16:48:06

阅读数:1084

评论数:0

hdu_2004_成绩转换_解题报告

题目出处 简单题 思路: 这题应该是学习后C的 switch 或 if-else-if 语法后经常做的题目类型 所以此题用上述两种分支语句都能解题,而初学者可能多数这样做: if (input > 100 || input < 0) { printf("Score...

2013-04-04 11:04:49

阅读数:1006

评论数:0

hdu_2003_求绝对值_解题报告

题目出处 简单题 思路: 调用库函数解决。需要注意的是此题输入是的实数而不是整数,所以调用的函数应该是 fabs() 而不是abs() 关键代码: #include printf("%0.2f\n", fabs(input));

2013-04-04 10:51:21

阅读数:807

评论数:0

hdu_2002_计算球体积_解题报告

题目出处 简单题 思路: 与hdu2001一样,套公式即可 r:球体的半径 关键代码: #define PI 3.1415927 result = 4.0 / 3.0 * PI * pow(r, 3); printf("%.3f...

2013-04-04 10:45:53

阅读数:1362

评论数:0

hdu_2031_进制转换_解题报告

题目出处 简单题 思路: 将十进制的32位整数转换成其他进制,这个可以用余数定理,关于进制转换的文章谷歌一下已很多,这里不详述 此题解法可以采用最简单最直接想到的方法,就是保存转换后的数,再倒序输出,可以利用打表技巧输出: char table[] = "01234567...

2013-04-03 10:27:28

阅读数:921

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭