
DP
code_wind
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[DP] poj2353
/* 题意是有N层,每层M个房间,每个房间有花费,从第1层走向第N层,可以向上、左、右方向走。 输出使得花费最小的路径 */ #include#include#include#includeusingnamespace std;int inque[600];int a[120][600], f[120][600];int pre[120*600], n, m;voiddfs(int k){if( k==-1);elsedfs( pre[ k]), coutretur原创 2010-11-12 12:06:00 · 415 阅读 · 0 评论 -
[DP] poj3267
/* 这道题求的是某个字符串str,至少删去多少个字符后,剩下的字符串是由dict中的单词可以组成的。 设f[i]=m,代表str[i...L-1]中至少删去m个字符后,剩下的字符串是由dict中的单词可以组成的。 则问题求的就是f[0]。 且可以得到递归式: f[L]=0;dp[i]=dp[i+1]+1 如果存在单词可以匹配:f[i]=min(dp[i], dp[t+1]+(t-i+1)-m) 且str[t-1]为可以匹配的字符串的最后一个字符,匹配的单词的长度为m。 f[原创 2010-11-12 15:31:00 · 329 阅读 · 0 评论 -
[DP] poj1837
/*题目意思是给你一个balance, 共有C个位置, G个砝码, 问你总共有多少种方法使balance左右平衡(每一种方法中砝码都要用完)。 状态方程dp[i][j] 表示使用前i个砝码, 不平衡数为j的方法数(j>0 表示右边比左边重j,j #include #include using namespace std; int dp[21][15001]={0}; int main() { //freopen("in.txt","r",stdin); int C,N,P原创 2010-11-12 12:23:00 · 291 阅读 · 0 评论 -
[DP] boj1440
/* * 在一条直线上摆着N堆石子,现要将石子有序的合并成一堆, * 规定如下:每次只能移动相邻的2堆石子合并,合并花费为将的一堆石子的数量。 * 设计一个算法,将这N堆石子合并成一堆的总花费最小(或最大)。 * 那么最优子结构是什么呢?如果有N堆,第一次操作肯定是从n-1个对中选取一对进行合并, * 第二次从n-2对中选取一对进行合并,以此类推…… * 递推公式如下:f[i][j]=min(f[i][j], f[i][k]+f[k+1][j]+sum(i,j)); */ im原创 2010-11-12 12:25:00 · 310 阅读 · 0 评论 -
[DP] poj1260
<br />/* 题意:已知每种珍珠需要几个,花费多少 买珍珠的花费为(need[x1]+need[x2]+...+10)*max(cost[x1],cost[x2],....) 10为定值 求买完所有珍珠最小的花费 */ import java.math.*; import java.util.*; import java.io.*; public class Main { static int min(int a,int b){return (a<b)? a:b;} st原创 2010-11-15 00:15:00 · 406 阅读 · 0 评论 -
[DP] poj1080
/*poj1080 Sample AGTGATG -GTTA-G score : (-3)+5+5+(-2)+5+(-1) +5=14. 每次读入2个字符串只有A,T,C,G 可以做3个操作: 1.删除目标串一个字符 2.删除原串一个字符,代价是a[?]['-']见表格 3.改变一个字符代价是a[x][y] 求代价最小的使2个字串相同的方法。 dp[i][j]是原串第i个对应目标串第j个的最小代价 dp[i][j]=max(dp[i-1][j]原创 2010-11-16 15:46:00 · 333 阅读 · 0 评论 -
[DP] boj1670
<br />/* Description dalong最近对汉密尔顿路很感兴趣,现在他给你一个包含n个点的无向图, 对于一条路径a1->a2...->ak,他定义这条路径的花费值value = a1*a2*...*ak。 汉密尔顿路定义:给定图G,若存在一条路,经过图中每个结点恰好一次,这条路称作汉密尔顿路。 dalong现在给你一个无向图,包含n个点和m条边,他请你帮他找到一条花费值最小的汉密尔顿路。 数据范围: 1 <= n <= 16 , 1 <= m <= n^2; Input 多原创 2010-11-17 12:04:00 · 363 阅读 · 0 评论 -
[DP]poj1191
<br />/*将一个8*8的棋盘进行如下分割: 将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割, 这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。 (每次切割都只能沿着棋盘格子的边进行) 原棋盘上每一格有一个分值,一块矩形棋盘的总分为其所含各格分值之和。 现在需要把棋盘按上述规则分割成n块矩形棋盘,并使各矩形棋盘总分的均方差O'最小。 其中平均值xi为第i块矩形棋盘的总分。 请编程对给出的棋盘及n,求出O'的最小值。 Input 第1原创 2010-11-18 14:59:00 · 348 阅读 · 0 评论