public class GameTree {/*** 推断剩余球数,谁能取到最后谁赢,* ,一人取一次,默认我方先取,,是否能必胜,能就返回true,否则false* @param x剩余球数* @return*/static boolean f(int x){int[] op={1,3,7,8}...
分类:
其他好文 时间:
2014-07-11 18:48:55
阅读次数:
180
完全背包问题。
我的背包训练第二题。按照背包九讲的步骤来搞。
题意是说给你一些本钱,然后有一些债券可以购买,不同的债券会有不同的利润,在规定年限内,利润要最大。
债券是无限制购买的,(完全背包)获得的利润可以买债券,(背包变大)
每年都可以选择债券,也就是每年都要重新开始,(每年一次)
最后得出你手上的钱有多少。这道题题目中提示了 1000的倍数。但是本钱...
分类:
其他好文 时间:
2014-07-10 21:29:48
阅读次数:
222
HDU 2829 Lawrence(动态规划-四边形不等式)
题目大意:
有n个点连在一起,m个炸弹可以阻断它们的相连,问你全部用完炸弹后的最小值。
解题思路:
四边形不等式是一种比较常见的优化动态规划的方法:
设m[i,j]表示动态规划的状态量。
m[i,j]有类似如下的状态转移方程:
m[i,j]=opt{m[i,k]+m[k,j]}(i≤k≤j)
如果对于任意的a≤b≤c≤d,有m[a,c]+m[b,d]≤m[a,d]+m[b,c],那么m[i,j]满足四边形不等式。
以上是适用这种优化方法的必要...
分类:
其他好文 时间:
2014-07-08 18:07:15
阅读次数:
273
DP 一直是心中痛,不多说了,这个暑假就坑在这上了。
这暑假第一道DP题,01背包问题。
题意是说物品有 重量和价值 ,但你能承受的重量有限,问你能带的最大价值。
这题数组开大点,虽然不知道有啥坑点,但是我数组开得大,直接1A了。
#include
#include
#include
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-07-08 10:33:09
阅读次数:
229
既然将这道题分类到动态规划的题目里面,一开始便是用动态规划的思想去思考。一个上午毫无突破,看的人家的题解。定义四个伪指针存放下标,分别表示的意思是在已知的丑数中,能够与2,3,5,7相乘的最小的数的下标。上面这句话要好好体会。也就是说dp[p1] * 2 能够得到一个新的丑数,其他三个以此类推。但我...
分类:
其他好文 时间:
2014-07-06 20:41:32
阅读次数:
223
最长单调递增子序列问题
题目:设计一个 O( n ^ 2 )复杂度的算法,找出由 n 个数组成的序列的最长单调递增子序列。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.i...
分类:
其他好文 时间:
2014-07-06 11:30:45
阅读次数:
176
数塔问题
题目:给定一个数塔,其存储形式为如下所示的下三角矩阵。在此数塔中,从顶部出发,在每一节点可以选择向下走还是向右走,一直走到底层。请找出一条路径,使路径上的数值和最大。
输入样例(数塔):
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16
输出样例(最大路径和):
59...
分类:
其他好文 时间:
2014-07-06 08:38:12
阅读次数:
166
问题描写叙述 最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,假设各自是两个或多个已知序列的子序列,且是全部符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。 解决最长公共子序列,一种经常使用的办法,就是穷举法,组...
分类:
其他好文 时间:
2014-07-03 07:09:44
阅读次数:
255
本题是背包问题,但是需要转化成背包的。
因为是两个人洗衣服,那么就是说一个人只需要洗一半就可以了,因为不能两个人同时洗一件衣服,所以就成了01背包问题了。
思路:
1 计算洗完同一颜色的衣服需要的总时间totTime
2 利用动态规划背包法求这些衣服能在那些时间点完成
3 求比(totTime+1)/2大的最小时间点
4 得到洗一种颜色衣服的时间,那么继续求下洗一种颜色衣服的时间
5...
分类:
其他好文 时间:
2014-07-01 14:22:46
阅读次数:
209
动态规划(Dynamic programming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。
动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题...
分类:
其他好文 时间:
2014-07-01 11:21:13
阅读次数:
293