上一页 1 ··· 11 12 13 14 15
摘要: 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1260题目大意:有n个数1—n,将他们排成一列。最左边必须是1,后面排列的数字和与他们它们相邻的数字只差不能超过2,求有多少中排列方式。解题思路:一开始看到这题,才55个点,果断dfs,结果TLE。不过至少答案是正确的,然后把答案给记录起来,仔细一分析,发现有规律可寻,打表,果断过了。规律递推式:dp[n]=dp[n-1]+dp[n-3]+1。搜狗一下发现别人此题写的是DP,囧。然后又思考了一下,果然如此。n个人时求dp[n]。第2个位置放2时有dp[n-1]种;第2个位置放3,第3个 阅读全文
posted @ 2012-11-07 15:55 Mr. Ant 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183题目大意:给你一串数字,要你删去n个数字,使得删去n个数字后数值最小。解题思路: 蛋疼的水题,搞了我一天。开始是暴力模拟,各种测试对但就是过不了。所以换了个写法。 思路主要是这样的: 因为需要你删除m个数使得结果最小,所以每次对字符串进行一次遍历,从前往后,只要a[i]>a[j] (j的位置为i后面未标记的第一个) 则对a[i]进行一次标记(赋赋值)将其除外,进行n次遍历,这样就删除了n个数字。因为删除的都是和后面比较相比下大的,所得结果当然就最小了。 1 #include <io 阅读全文
posted @ 2012-11-07 00:18 Mr. Ant 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 题目链接: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) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3038题目大意:给你n给整数,m次操作。每次操作是给出三个整数a,b,c; 子序列a~b的和为c。找出m次操作中有多少次不合法,不合法的操作舍去。解题思路:先开一个dis[n]数组,dis[x]记录的是与父节点的距离。d[x]记录的是[0,x]的和 dis[x]=d[x]-d[pre[x]];对于每个操作:1.如果操作合法,则进行更新。 注意:节点小的作为父节点放前面。2. 如果不合法(前提是父节点相同),即dis[b]-dis[a]不等于c,次数加1. 1 #include <iostrea 阅读全文
posted @ 2012-11-03 15:47 Mr. Ant 阅读(278) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15