自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

九问的烦恼

记录自己的心路历程与技术成长之路。

  • 博客(148)
  • 收藏
  • 关注

原创 [动态规划]UVA437 - The Tower of Babylon

题意:或许你曾听过巴比伦塔的传说,现在这个故事的许多细节已经被遗忘了。现在,我们要告诉你整个故事:巴比伦人有n种不同的积木,每种积木都是实心长方体,且数目都是无限的。第i种积木的长宽高分别为{ x i , y i , z i }。积木可以被旋转,所以前面的长宽高是可以互相换的。也就是其中2个组成底部的长方形,剩下的一个为高度。巴比伦人想要尽可能的用积木来堆高塔,但是两块积木要叠在一起是有条件的:只有在第一块积木的底部2个边均小于第二块积木的底部相对的2个边时,第一块积木才可以叠在第二块积木上方。例如:底

2014-04-22 18:51:04 3709 2

原创 [动态规划]UVA10285 - Longest Run on a Snowboard

题意:Michael很喜欢滑雪。滑雪很好玩,但是有一点比较麻烦。就是为了要获得速度,滑雪一定要由高处往低处滑。等你到了山脚时就得走路上山或等待滑雪登山缆车了。Michael想要知道在某一个滑雪场最长的滑雪路径有多长。滑雪场区域是以数字形成的方块来表示。数字的大小代表各个点的高度。看以下的例子: 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9我们可以从一点滑到相连的另一点,只要高度是由高到低。在这里我们说某

2014-04-22 10:08:53 2582

原创 [动态规划]UVA10465 - Homer Simpson

题意:荷马.辛普森(Homer Simpson)是一个非常聪明的家伙。他很喜欢吃两种汉堡(我们称为A和B好了)。他吃一个A汉堡需要m 分钟,吃一个B汉堡需要n 分钟。如果有t 分钟时间的话,请你找出在不浪费一点点时间的情形下,辛普森先生最多可以吃多少个汉堡。如果必须要浪费时间(这个时候辛普森会喝啤酒),也请你找出尽可能少喝啤酒的情况下,他最多可以吃几个汉堡,还有花多少分钟喝啤酒。以Sample Input的三组测试资料为例说明:t=54, m=3, n=5 我们可以找到最多吃18 个A汉堡使得不浪费一

2014-04-21 20:49:29 1523

原创 [动态规划]UVA531 - Compromise

Compromise In a few months the European Currency Union will become a reality. However, to join the club, the Maastricht criteria must be fulfilled, and this is not a trivial task for the

2014-04-21 20:00:01 1231

原创 [leetcode]Binary Tree Postorder Traversal&&Binary Tree Preorder Traversal

题意:给出了一颗二叉树,求二叉树的前序遍历和后序遍历,题中要求尽量使用非递归方法遍历后序遍历递归代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va

2014-04-20 19:32:51 1155

原创 [动态规划]UVA10130 - SuperSale

题意:在一个商场有个超级拍卖。每个人每样商品只能拿一件。现在有一家人到超级拍卖会去拿商品,只要他搬的懂。我们手上有所有商品的价格以及重量,我们也知道这家人每个人最多能搬的重量,请问这家人能从超级拍卖会搬到的最大价格是多少?思路:典型的0/1背包问题,只不过是换成了N个人。

2014-04-20 15:13:04 1155

原创 [leetcode]单链表插入排序

给出一个单向链表,只有表头,使用插入排序的方法给他排序,被这道题磨了好久,不熟悉单链表以及指针,还是需要多多练习struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode *insertionSortList(ListNode *head)

2014-04-20 14:34:33 1586

原创 [动态规划]UVA624 - CD

题意:你即将开车出远门,当然希望在车上能聆听一些美好的音乐。你的车上只有播放录音带的设备,但是你最喜欢的音乐却都存放在CD上。所以你需要把CD上的音乐转录到录音带上。现在你必须解决的问题是:你的空白录音带长共N分钟,你如何选择CD上的歌使得尽可能的利用录音带的空间。以下是一些此问题的假设:CD上的歌最多不会超过20首。没有任何一首歌的长度超过N分钟。要录在录音带上的歌不能重复。每首歌的长度以一整数表达。N也是一个整数。你的程式必须找出该放哪些CD上的歌到录音带上(按CD上的顺序),使得录音带空

2014-04-19 17:03:01 1431

原创 [动态规划]UVA348 - Optimal Array Multiplication Sequence

题意:给你2个矩阵A、B,我们使用标准的矩阵相乘定义C=AB如下:A阵列中栏(column)的数目一定要等于B阵列中列(row)的数目才可以做此2阵列的相乘。若我们以rows(A),columns(A)分别代表A阵列中列及栏的数目,要计算C阵列共需要的乘法的数目为:rows(A)*columns(B)*columns(A)。例如:A阵列是一个10x20的矩阵,B阵列是个20x15的矩阵,那么要算出C阵列需要做10*15*20,也就是3000次乘法。要计算超过2个以上的矩阵相乘就得决定要用怎样的顺序来

2014-04-18 14:42:00 1416

原创 [动态规划]UVA674 - Coin Change

题意:給你一個金額( n cents),請你回答共有多少種硬幣組合的方式。例如:n=11,那麼你可以有以下4種硬幣的組合:1個 10 cent的硬幣加上1個 1 cent的硬幣2個 5 cent的硬幣加上1個 1 cent的硬幣1個 5 cent的硬幣加上6個 1 cent的硬幣11個 1 cent的硬幣p.s 美國的零錢共有以下5種硬幣以及其面值:penny, 1 centnickel, 5 centsdime, 10 centsquarter, 25 centshalf-dolla

2014-04-17 09:57:43 1487

原创 [动态规划]UVA357 - Let Me Count The Ways

题意:经过在百货公司的一场血拼之后,小梅发现她身上的零钱共有17分(cent,美金货币单位,其他货币及面值请参考下方红字部分),分别是1个dime,1个nickel,以及2个penny。隔天,小梅去便利商店买完东西后发现她身上的零钱恰好又是17分,这次是2个nickel及7个penny。小梅就在想,有几种硬币的组合可能凑成17分呢?经过仔细算算之后,发现共有6种。你的问题就是:给一个金额,请你回答共有多少种硬币组合的方式。思路:动态规划的水题目,又是换硬币这一类型的题目。

2014-04-16 22:54:49 1888

原创 [动态规划]UVA147 - Dollars

题意:纽西兰的货币包含了$100, $50, $20, $10, $5 的纸钞和$2, $1, 50c, 20c, 10c, 5c 的硬币。给你某金额的数字,请你写一个程式回答:使用这些面额的​​纸钞或硬币,有多少种不同的方法可以组合成这个金额。例如:20c 可以有4个方法可以得到:(改变金额的顺序不会增加方法数,例如2 * 5c + 1 * 10c 和下面第3种方法视为同一种)1 * 20c2 * 10c1* 10c + 2 * 5c4 * 5c思路:硬币转转,典型的DP题目。输入有点坑爹,用

2014-04-16 20:34:17 1603

原创 [动态规划]UVA10192 - Vacation

题意:题意说了大堆,其实题意就是求两个字符串的最大匹配子串。思路:非常典型的LCS题目,直接最简单的动态规划就可以解决

2014-04-16 11:52:41 1394

原创 [动态规划]UVA10066 - The Twin Towers

题意:从前从前在古帝国有2座高塔位于2座城市中,他们的形状不太相同。但是他们都是用圆柱形的石块一个堆在另一个上面建起来的。每个圆柱形石块的高度都相同(定为1),但是半径却不一。所以,虽然2座高塔的形状不一样,但事实上他们可能有许多石块是相同的。在高塔建成的一千年后,国王要求建筑师拿掉高塔的某些石块,使得2座高塔的形状大小和高度一样。但同时要尽可​​能让高塔的高度越高越好。新高塔的石块的顺序也必须和原来的高塔一样。国王认为这样可以代表2座城市之间的和谐与平等。他为这2座高塔命名为「双子星塔」现在,你的任

2014-04-16 10:31:05 1574

原创 [动态规划]UVA10131 - Is Bigger Smarter?

题意:有些人认为大象是越大只的越聪明​​。为了要反证这项说法,你想要用收集到的大象资料列出一个大象数目最大的子集合,在这个子集合中,大象的体重是渐增的,而智商是渐减的。Input只有一组测试资料,包含了最多1000只大象的体重及智商的资料。每只大象一列,有2个整数W i及S i(介于1和10000之间)分别代表第i只大象的体重及智商。大象的编号从1开始。不同的大象可能有相同的重量,相同的智商,或相同的重量及智商。Output第一列输出一个整数n,代表你可以找到的子集合最大的大象数目。接下来的n

2014-04-16 10:01:16 1547

原创 [动态规划]UVA10003 - Cutting Sticks

题意:你的任务是替一家叫Analog Cutting Machinery (ACM)的公司切割木棍。切割木棍的成本是根据木棍的长度而定。而且切割木棍的时候每次只切一段。很显然的,不同切割的顺序会有不同的成本。例如:有一根长10公尺的木棍必须在第2、4、7公尺的地方切割。这个时候就有几种选择了。你可以选择先切2公尺的地方,然后切4公尺的地方,最后切7公尺的地方。这样的选择其成本为:10+8+6=24。因为第一次切时木棍长10公尺,第二次切时木棍长8公尺,第三次切时木棍长6公尺。但是如果你选择先切4公尺的地

2014-04-15 21:49:32 1609

原创 [动态规划]UVA103 - Stacking Boxes

题意:在数学或电脑科学里,有些概念在一维或二维时还蛮简单的,但到N维就会显得非常复杂。试想一个 n维的「盒子」:在二维空间里,盒子( 2 , 3 )可代表一个长为2个单位,宽为3个单位的盒子;在三维空间里,盒子( 4 , 8 , 9 )则是一个4*8*9(长、宽、高)的盒子。至于在六维空间里,也许我们不清楚( 4 , 5 , 6 , 7 , 8 , 9 )长得怎样,不过我们还是可以分析这些盒子的特性。在此问题里,我们要算出一组n维盒子里,它们的「最长套入串列」: b 1 , b 2 , ......,b

2014-04-15 14:43:48 1566

原创 [动态规划]UVA10405 - Longest Common Subsequence

题意:求两个字符串的最长匹配子串。思路:动态规划的典型题目。比较基础。

2014-04-15 14:37:09 1740

原创 [动态规划]UVA10827 - Maximum sum on a torus

题意:环形矩阵上的最大子矩阵和。思路:先复制三个矩阵拼接成一个大的矩阵,然后枚举所求最大子矩阵在第一个矩阵中的左上角,再通过动态规划的方法求出长宽不大于N的最大子矩阵,各种枚举情况中的最大和即为所求解。

2014-04-13 15:10:56 1059

原创 [动态规划]UVA111 - History Grading

题意:在资讯科学中有一些是关于在某些条件限制下,找出一些计算的最大值。以历史考试来说好了,学生被要求对一些历史事件根据其发生的年代顺序来排列。所有事件顺序都正确的学生无疑的可以得满分。但是那些没有全对的人又该如何给分呢?以下有2种可能的给分方式:每个与标准答案的顺序相同的事件得1分每个在最长(但不一定要连续)的序列事件中,其相对的顺序亦可以在标准答案发现者,每个事件得1分。举例说明:如果有4个事件其发生时间的顺序依次是1 2 3 4(就是标准答案啦,意思是第1个事件发生顺序为1,第2个事件发生的顺

2014-04-13 11:14:34 1298

原创 [动态规划]UVA108 - Maximum Sum

题意:给出一个方阵,这个这个方阵里面元素和最大的一个矩阵。思路:最大连续子序列的升级版本,把原来的一维矩阵变成了二维的矩阵,需要转换思路,把二维矩阵看成一维数组,这个一维数组的元素是二维数组中同一列的元素相加。首先思路是枚举这个矩阵大小,再扫描。

2014-04-11 20:05:10 1419

原创 [动态规划]UVA 507 - Jill Rides Again

题意:题目虽然很长,但是题意比较清晰,就是给出一段数字,求这段数字的最大连续子串和。但是注意的是在值相等的情况下,优先选择距离最长的。思路:很明显的动态规划的题目,状态转移方程:sum[i] = max{sum[i-1]+a[i],a[i]}

2014-04-11 19:59:52 1253

原创 [贪心]UVA11100 - The Trip, 2007

题意:有一个团队要外出旅行,需要带很多包,大包里面能放小包,问这些包最后剩下多少个包。思路:贪心,先排序,由于大包里面能放小包,所以最后剩下的包的个数是相同大小的包的个数的最大数

2014-04-10 10:42:27 1352

原创 [贪心]UVA10716 - Evil Straw Warts Live

题意:给出一个字符串,问最少通过多少次交换可以把它变成回文串。如果不能变成回文串输出impossible。题意:完全没想出是贪心,一开始还想暴力搜索的。。智商捉急啊,各种不会做。在移动的时候我们不妨先用点贪心的思想,每次应该先把两端的变成回文,如果我们先让两端变成回文之后,这样中间的字符在移动的时候就有可能少和1个移到两端的字符发生交换,因此这样的决策不会产生负面影响。 接下来就是去想我们要怎样让两端变成回文的了,其中一个猜想就是如果两端字符不同,那么就固定两端之一不动,通过移动另外一个字符使

2014-04-06 19:20:00 1138

原创 [贪心]UVA10720 - Graph Construction

题意:给出N个顶点的度数,判断这N个顶点是否构成图。思路:为保证其尽可能为图,要优先考虑大度数之间的点优先连接。在这里可以采取依次减度数的方法推断能否构成图。如:3,3,2,2,1五个点,从度数最大的开始考虑,先去掉3,则后面紧接的三个点度数依次减去1,剩下的四个点排序后为2,1,1,1,再去掉度数最大的2,后面的两个点一次减去1,排序后剩下三点为1,0,0,1后的一点度数再减去1,则为-1,明显不成立,为Not possible。ps:简直坑,提交了好多次,总是WA,找了好久的bug,发现最后的Not

2014-04-06 11:43:57 1297

原创 [贪心&&排序]UVA10670 Work Reduction

题意:现在有N个任务要做,而且要留M个到明天做,你自己做不完,只能请团队帮你做,每个团队有两种方案,一个一个任务做或者把你当前的任务的一半做掉,花费各不相同,求出对每一个团队的最小花费。思路:典型的贪心题目,每次都选择最优方案,并且保证当前的任务数量大于等于M。

2014-04-06 11:34:22 1167

原创 [贪心]UVA10382 Watering Grass

题意:有一个草坪,在草坪中有一些喷水装置,给出这个草坪的长和宽,和喷水装置的位置和半径,求最少放置多少个喷水装置能使得草坪被全部覆盖?思路:题目一看,就知道是区间覆盖问题,用贪心解决,因为是圆形区域覆盖不好计算,我们把圆形区域转换到草坪上来,就变成了矩形区域,这样就比较好计算了。

2014-04-04 22:11:59 1206

原创 [分治]UVA10245 The Closest Pair Problem

题意:给出N个点,找出这N个点中距离最近的点对。思路:直接暴力的话,肯定超时,一开始想到使用分治,但是不确定,后来看了下网上人的解法,确实是使用分治,首先我们把坐标按x升序进行排列,然后定义L、R分别为区间的左右端点(L、R均代表点的标号),mid为区间中点,我们可以先分别暴力求出在[L,mid]、[mid,R]中最短的线段,不妨设其为min,当然最短线段还可能是两个点分别在两个区间之中,但如果存在这样的最短线段,那么线段的两个端点一定会在区间[a,b]中,并且x[mid]-x[a]>=min,x[b]-

2014-04-04 11:09:03 1226

原创 [贪心]UVA10714 Ants

题意:蚂蚁在木棍上爬,速度1cm/s,给出木棍长度和每只蚂蚁的位置,问蚂蚁全部下木棍的最长时间和最短时间。思路:典型的贪心题目,所有的蚂蚁往一个方向走的时候才会有最大值最小值。

2014-04-03 20:53:44 1072 1

原创 [递归]UVA11129 An antiarithmetic permutation

题意:给定一个包含了0到n - 1的序列。。要使得这个序列中每个长度大于2的子序列都不是等差数列。。思路:对于一个等差的序列。如0 1 2 3 4 5 我们可以这样做,把他分离成2部分等差子序列0 2 4和1 3 5然后组合成一个新的序列0 2 4 1 3 5。这样做的话,可以保证前半部分无法和后半部分组合成等差数列。可以证明,一个序列的等差是k,首项为a1,序列为,a1, a1 +k, a1 + 2k, a1 + 3k .... a1 + (n - 1)k.分成的两部分为a1, a1 + 2k , a

2014-03-31 16:24:30 1157

原创 [贪心]UVA11054 Wine trading in Gergovia

题意:题意:一题街道上很多酒店,交易葡萄酒,正数为卖出葡萄酒,负数为需要葡萄酒,总需求量和总售出量是相等的,从一家店到另外一家店需要路费(路费=距离×运算量),假设每家店线性排列且相邻两店之间距离都是1,求最小路费。思路:一开始看出是贪心但是方法完全用错,我的想法是按照出售或者买进的葡萄酒的数量排序,然后依次向右找到要买进或者要卖出的居民,直到所有的都为零,时间复杂度应该是O(N*LogN),但是果断超时了。。后来参考别人的思路,算是明白怎么一回事了我们可以假想第i个人总是与第i+1个人来进行交易来满足

2014-03-29 11:49:38 1502

原创 [贪心]UVA10718 Bit Mask

Problem ABit MaskTime Limit1 SecondIn bit-wise expression, mask is a common term. You can get a certain bit-pattern using mask. For example, if you want to make fir

2014-03-28 09:47:19 1111

原创 [DFS&&剪枝]uva10400 Game Show Math

题意:在英国有一个数学游戏,给参赛者一些正整数和一个目标数,参赛者必须在这些正整数间插入+、-、*或/ 的符号,使得最后计算的结果等于目标数。计算的方式是由左到右,而且不必管运算的优先顺序(就是不管先乘除后加减那一套)。在这个数学运算式中,有三个限制:正整数出现的次序不可改变,也就是要与输入的顺序相同因为目标数也是一个正整数,所以在运算的过程中,你只有在可以整除的情况下才可以使用/ 。在运算的过程中,如果你用某一​​个运算符号,会导致产生的数超出(-32000 ~ +32000)的范围,那么你不可

2014-03-26 11:53:52 1132

原创 [贪心]UVA10602 Editor Nottoobad

题意:一种编辑器只能通过声音做到两种操作-“repeat the last word”, “delete the last symbol”,其他的都必须自己手动输入,问输入一些单词,最少需要手写输入多少次。思路:这是比较典型得贪心法了,要使得手写输入最少,首先要寻找出最大的匹配前缀,因此把所有的单词按照字典序排序,得到得序列是最优,因为前缀有匹配得都会排到相邻位置。

2014-03-26 09:07:37 1184

原创 [暴力]uva10132 File Fragmentation

题意:原本有很多个一样的长串,每个长串都分成了两个短串但是分割的位置不一定相同即两个短串不一定是平分的(就是输入中的那些串)。你要把这偶数个短串拼回那个长串(即2N个短串拼回N个相同的长串),如果有多种可能,任意一种即可,然后输出这个长串思路:输入有点恶心,首先是case数,然后一个空行,然后再输入信息,然后又以一个空行结束该组数据,如果是最后一组数据了,不以空行结束,而是直接以EOF结束。输出,case之间有一个空行,最后一个case后面不要加空行每组case的信息,就是N行的串,串中只有01,串的

2014-03-24 16:11:35 1117

原创 [贪心&&二分]uva714 Copying Books

最大值最小化的典型题目题意:给出m个数字,一个数字k,把这m个数字划分为k个区间使得这k个区间中的所有的数相加的最大值最小,k个区间中的数字必须按照原来的顺序。思路:典型的最大值最小化,这是刘汝佳的算法竞赛经典入门中的讲解,然后使用贪心从后往前找。

2014-03-17 21:24:06 1024

原创 关于macbook使用感受。

新的电脑上周末刚到,到如今使用了近一周了。说说我自己的感受吧。我的电脑配置是15寸的retina屏幕+256GSSD+8G内存+i7处理器。r屏幕还是非常给力的,看什么都觉得特别清晰,不过有些照片的像素不高的话R屏幕显示有点模糊,内存的话跑虚拟机毫无压力。开关机速度比之前的旧电脑好太多。。兼职神速。最令自己满意的还是这个操作系统,MAC OS这个系统和linux差别不是特别大,Linux有的M

2014-03-16 18:56:05 2379 4

原创 [模拟]uva993 Product of digits

题意:给你一个大于等于0 的整数N,请你你找到最小的自然数Q ,使得在Q 中所有数字(digit)的乘积等于N 。思路:比较简单了,就是判断这个数能否被分解成一串1-9的数字相乘得到。

2014-03-16 10:09:00 1142

原创 [模拟水题&&中位数]uva10041 Vito's Family

典型的中位数题目题意:世界闻名的黑社会老大Vito Deadstone要搬到纽约来了。在那里他有一个大家族,并且他们都住在Lamafia大道上。因为Vito时常要拜访所有的亲戚,他想要找一间离他们最近的房子,也就是说他希望从他的家到所有的亲戚的家的距离的和为最小。他恐吓你写一个程式来帮助帮助他解决这个问题。思路:看清楚题目之后就很好理解了,就是典型的中位数。

2014-03-15 22:35:27 1387

原创 [贪心]uva311 Packets

一道典型的贪心题目。。题意:有一间工厂生产的东西, 被包装在相同高度h 的正方形容器内, 但其面积大小分别有:1*1, 2*2, 3*3, 4*4, 5*5, 6*6等六种尺寸。这些产品总是用高度为h,面积为6*6的箱子打包后寄给客户。因为成本关系,当然希望将客户所订购的产品放在最少的箱子里寄出。请你写一个程式找出寄送这些产品最少需要多少个箱子,这可以使工厂节省下不少钱。思路:很典型的贪心思路了,首先6*6的盒子只能单独放箱子里,5*5的盒子可以和11个1*1的盒子搭配。4*4的盒子优先和2*2的盒子搭

2014-03-15 09:24:04 1859

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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