题意:给n种立体块,每种有无限个,上面的块长宽必须小于下面的块,问最多可以搭建多高
思路:输入的时候小小处理下,把每个块各条边当高的情况存入结构体中,按升序排序,然后dp,比较求出最大值。。看好多代码都说什么最长上升子序列,感觉没有用到额,LIS的标记数组是用来存储相应长度的最小值的,没看出来哪里用上了额。。。数据范围小,直接就是dp了=。=
#include
#include
#...
分类:
其他好文 时间:
2014-08-20 22:47:03
阅读次数:
253
题目:给你两个文章,求里面最多的按顺序出现的单词。
分析:dp,LCS(最大公共子序列)。直接求最大公共子序列,每个单词当做一个元素即可;
注意记录路径:如果匹配成功记录前驱,否则取前面取得的最大值。
说明:注意输出时的格式,多打个空格WA了好几次才发现。
#include
#include
#include
#include
using namespac...
分类:
其他好文 时间:
2014-08-20 19:38:42
阅读次数:
196
题目链接:hdu 4960 Another OCD Patient
题目大意:给定一个长度为n的序列,然后再给出n个数ai,表示合成i个数的代价。每次可以将连续的子序列和成一个数,即为序列中各个项的和。要求将给定长度n的序列变成一个回文串,一个数字只能被合成一次。
解题思路:dp[l][r]表示从l到r被和成回文串的最小代价,dp[l][r]=min(val(r?l+1),val(r?...
分类:
其他好文 时间:
2014-08-20 00:06:35
阅读次数:
205
概述:先根据被排序对象的属性值的最小值到最大值建立并编号一连串连续有序的箱;然后遍历一遍需要被排序的对象序列,每遍历到一个对象都根据其属性值找到并装入对应编号的箱子直到遍历完毕,这样会使不同属性值的对象在不同序号的箱子中,而相同属性值的对象则在同一编号的箱子中;最后再遍历一遍箱子序列并删掉对象个数为0的空箱子,则剩余的箱子序列即为有序的对象序列。
建议数据结构:如果有需要对于箱子序列最好...
分类:
其他好文 时间:
2014-08-19 22:28:35
阅读次数:
256
在箱子排序中,虽然时间复制度只有(n),但如果其箱子序列较大的话将会导致程序的空间复杂度较大,所以对于对于属性值跨度比较大的序列可以采用基数排序法。
概述:具体的做法是并不直接对这些数排序,而是采用一些基数来分解这些数,例如:用基数10来分解3725可以得到3、7、2和5。而利用60来分解可以得到1、2、5。然后再根据每一位基数从低位到高位对原数据进
行排序,即若最长的基数有m位,直到...
分类:
其他好文 时间:
2014-08-19 22:27:55
阅读次数:
208
题意:求最长上升子序列,n=100000思路:O(N^2)铁定超时啊。。。。利用贪心的思想去找答案。利用栈,每次输入数据检查栈,二分查找替换掉最小比他大的数据,这样得到的栈就是更优的。这个题目确实不错,思路很好#include #include #include #include #include ...
分类:
其他好文 时间:
2014-08-19 20:33:25
阅读次数:
267
题目:poj 1458 Common Subsequence
Description
A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a...
分类:
其他好文 时间:
2014-08-19 19:04:25
阅读次数:
182
题目:POJ 2533 Longest Ordered Subsequence
Description
A numeric sequence of ai is ordered if a1 a2 aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN)
be any sequence (ai1...
分类:
其他好文 时间:
2014-08-19 16:37:44
阅读次数:
218
ACM试题题源-(最长公共子序列):http://acm.nyist.net/JudgeOnline/problem.php?pid=36提交代码: import java.util.Scanner; public class Main { public stati...
分类:
其他好文 时间:
2014-08-19 14:06:04
阅读次数:
292
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路...
分类:
其他好文 时间:
2014-08-18 12:32:04
阅读次数:
230