1.题目描述:点击打开链接
2.解题思路:本题利用霍夫曼编码的原理解决。这道题本可以用动态规划来解决,之前已经在UVa10003上做过了这道题,不过今天才发现原来就是霍夫曼编码的变形,真的是非常巧妙。我们考察切木棍这个过程可以发现,实际上这把总长为L的木棍切割为L1,L2,L3等等我们需要的木棍是一个树状结构。那么最终的总开销就是sum{木板的长度*节点的深度}。从最优的角度考虑,最短的板对应的...
分类:
其他好文 时间:
2015-04-07 09:57:30
阅读次数:
111
题目:
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.For example, given
s = “leetcode”,
dict = [“leet...
分类:
其他好文 时间:
2015-04-06 21:53:21
阅读次数:
163
【题目】
Given a string containing just the characters '(' and ')',
find the length of the longest valid (well-formed) parentheses substring.
For "(()", the longest valid parentheses substring i...
分类:
其他好文 时间:
2015-04-06 20:21:52
阅读次数:
113
//这题和之前的2870题意相似,不过多了可以任意交换两列的功能
//先开始没看见能交换两列。。。结果裸的样例都没过,最后想了想//任意交换两列,那我们就可以直接对第i行第j列得到的cnt[i][j]
//这一行惊醒排序就可以了,其中cnt[i][j]表示前i行第j列有多少
//个相同的1,进行降序排序得到a[j],那么a[j]*j的最大值就是我
//们所要的答案,因为j前面的肯定是高于j的。
...
分类:
移动开发 时间:
2015-04-06 20:20:30
阅读次数:
155
参照大白书上面的解法,总共三个步骤,前两个步骤都较好理解。P[i]是用位表示的当选中i时,总共有0~n-1总共有多少个数字被覆盖。cover[S]则表示,当子集为S时,0~n-1中能够被覆盖的位数。若cover[S]的每位都为1,则说明子集S能对全集进行覆盖,当然可能子集S的子集就能做到这一点了。
关键的步骤是对状态转移方程的理解。书中的状态转移方程是f(S)=max{f(S0)|S0是S的子集...
分类:
其他好文 时间:
2015-04-06 20:19:09
阅读次数:
166
#include#include#includeusing namespace std;//int ct=0;//int arr[1000]={0};struct Bag{ int kg; int value;};Bag sth[6]={0,0,2,6,2,3,6,5,5,4,4,6};int ba...
分类:
其他好文 时间:
2015-04-06 16:58:50
阅读次数:
118
1 #include 2 #include 3 4 int length; 5 int c[20][20]; 6 int b[20][20]; 7 char f[20],s[20]; 8 9 void l(int m,int n)10 {11 int i,j;12 for(...
分类:
其他好文 时间:
2015-04-06 15:26:57
阅读次数:
148
首先的首先,必须明白动态规划(DP)以后很有用很有用很有用很有用……首先的其次,必须明白:动规≈搜索=枚举一、最简单的记忆化搜索(应该可以算DP)题目(来自洛谷OJ)http://www.luogu.org/problem/show?pid=1434#【不麻烦大家自己找了】题目描述 Descript...
分类:
其他好文 时间:
2015-04-06 14:01:54
阅读次数:
162
Best Time to Buy and Sell Stock I题意:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。 如果只允许进行一次交易,也就是说只允许买一支股票并卖掉,求最大的收益。分析:动态规划法。从前向后遍历数组,记录当前出现过的最低价格,作为买入价格,并计算以当天价格出售的收益,作为可能的最大收益,整个遍历过程中,出现过的最大收益就是所求。**代码:**O(n)时...
分类:
其他好文 时间:
2015-04-06 11:28:27
阅读次数:
142