自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

九问的烦恼

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

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

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

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

2014-04-22 18:51:04 3642 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 2507

原创 [动态规划]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 1448

原创 [动态规划]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 1191

原创 [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 1110

原创 [动态规划]UVA10130 - SuperSale

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

2014-04-20 15:13:04 1100

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

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

2014-04-20 14:34:33 1539

原创 [动态规划]UVA624 - CD

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

2014-04-19 17:03:01 1382

原创 [动态规划]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 1359

原创 [动态规划]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 1451

原创 [动态规划]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 1826

原创 [动态规划]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 1525

原创 [动态规划]UVA10192 - Vacation

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

2014-04-16 11:52:41 1347

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

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

2014-04-16 10:31:05 1529

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

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

2014-04-16 10:01:16 1506

原创 [动态规划]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 1570

原创 [动态规划]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 1507

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

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

2014-04-15 14:37:09 1646

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

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

2014-04-13 15:10:56 1016

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

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

2014-04-13 11:14:34 1254

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

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

2014-04-11 20:05:10 1367

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

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

2014-04-11 19:59:52 1211

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

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

2014-04-10 10:42:27 1319

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

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

2014-04-06 19:20:00 1109

原创 [贪心]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 1254

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

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

2014-04-06 11:34:22 1134

原创 [贪心]UVA10382 Watering Grass

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

2014-04-04 22:11:59 1159

原创 [分治]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 1191

原创 [贪心]UVA10714 Ants

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

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

空空如也

空空如也

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

TA关注的人

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