摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3127题目大意:一个大矩形,要你分割成小矩形(只能水平和竖直切割),每个小矩形都有一个价值,问如何分割能得到最大总价值。解题思路:完全背包思想,枚举所有可能情况。对于枚举每个小矩形都可以横放竖放两种情况。对于每种情况都有两种切割方式:横向切割或者竖向切割。 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using names 阅读全文
posted @ 2012-11-04 19:07 Mr. Ant 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3172题目大意: 找朋友,遇见新朋友就把他们的朋友圈子合并,输出总的朋友数。否则若已经在同一个,则直接输出就行。解题思路:明显的并查集,朋友数值需要再开一个数组存储父节点以下圈子人数,不在同一圈子合并就是。但是敲出代码后你会果断发现TLE。网上很多解题报告也是TLE,赛后的数据藐视加强了很多。用并查集+map暴搞明显要超时。这里就有点小技巧,对map进行指针优化处理。 1 #include <iostream> 2 #include <cstdio> 3 #include & 阅读全文
posted @ 2012-11-04 18:49 Mr. Ant 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 由于冒泡排序是以相邻元素来比较和交换的,因此,若一个元素离其最终位置较远,则需要进行多次的比较和移动操作。而快速排序则很好的解决了上述问题。 所以,可以说快排是冒泡排序的改进版本。 基本思想:首先选定一个元素作为中间元素,然后将表中所有元素和该元素相比较,将表中比中间元素小的元素调到表的前面,比中间元素大的元素调到表的后 面,再将中间元素放到这两部分之间作为分界点,由此而得到一个划分。然后再对左右两部分分别进行快速排序(即对所得到的两个子表再采用相同的方式来划分和 排序,直到每个子表仅有一个元素或为空表为止,此时便得到一个有序表)。代码一: 基本思想:p、r分别是待排数组的上下界。首先,用te 阅读全文
posted @ 2012-11-04 11:29 Mr. Ant 阅读(182) 评论(0) 推荐(0) 编辑