题目链接: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
题意:。。。
这道题就是区间问题三种中的区间完全覆盖问题,不懂的可以看我上一篇也是区间完全覆盖。
直接上代码:
#include
#include
#include
using std::sort;
struct node{
double le, ri;
}s[1005];
int cmp(node a, node b)
{
return a.le < b.le;
}
int ma...
分类:
其他好文 时间:
2014-08-20 00:02:06
阅读次数:
297
概述:先根据被排序对象的属性值的最小值到最大值建立并编号一连串连续有序的箱;然后遍历一遍需要被排序的对象序列,每遍历到一个对象都根据其属性值找到并装入对应编号的箱子直到遍历完毕,这样会使不同属性值的对象在不同序号的箱子中,而相同属性值的对象则在同一编号的箱子中;最后再遍历一遍箱子序列并删掉对象个数为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
#include int main(){ int n,a[205]; while(scanf("%d",&n)!=EOF) { int l,i,m,sum; for(i=0;i<n;i++) scanf("%d",&a[i]); m=n/5; sum=0; l=0; for(i=0;i<n;i++)...
分类:
其他好文 时间:
2014-08-18 18:02:42
阅读次数:
199
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路...
分类:
其他好文 时间:
2014-08-18 12:32:04
阅读次数:
230