![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 86
--子非鱼--
一个人幸运的前提是有能力和有条件改变自己
展开
-
nyoj 36 最长公共子序列
动态规划很神奇,在网上看到一位大牛对该类问题的分析,很透彻,转过来吧:最长公共子序列是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,这种方法判断修改的部分,往往十分准确。简而言之,百度知道、百度百科都用得上。算法 动态规划的一个计算两个序列原创 2013-01-23 10:15:07 · 659 阅读 · 0 评论 -
BNU 1065
简单的数位dp。题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1065直接上代码了:#include #include #include int dp[10005][17]; //dp[i][j]:表示第i个数字转换成二进制后第j位是0还是1int sum[17]; //sum[j]:表示所有数字转化成二原创 2014-03-23 17:25:27 · 577 阅读 · 0 评论 -
NYOJ 61 传纸条(一)
转自:http://blog.csdn.net/harrypoirot/article/details/20068649双线程dp;本题的特点是不只要从A找一条最优的路到B,并且还要有路回来,而且两条路不能有交叉、重合。要完成这一点,需要一种新思路,也就是说不是真的过去再回来,因为我们的目的是找到“两条”路,而方向则是无所谓的!所以我们可以从起始点同时计算两转载 2014-03-23 12:45:34 · 774 阅读 · 0 评论 -
矩阵连乘问题
做好充足的准备,你才能在机会到来时狠狠的抓住它!Come on!#include #include const int INF=100;int m[INF][INF],s[INF][INF],p[INF];// m[i][j]表示从第i个矩阵到第j个矩阵连乘需要进行乘法计算的次数// s[i][j]=k 表示:m[i][j]最小时,应先计算第ige矩阵到第k个矩阵的乘积,//原创 2013-10-16 17:12:45 · 658 阅读 · 0 评论 -
最大子矩阵和
#include //动态规划思想#include#define Min -0xfffffusing namespace std;const int INF=1e5+5;int num[INF][INF];int dp[INF];int max_sum(int n,int temp[]) //求最大连续子序列的和{ int maxsum(Min),sum(0);原创 2013-05-01 20:53:22 · 701 阅读 · 0 评论 -
nyoj 376 小强的Linux
点击打开题目链接简单树形dp,建立一个总源点就行了。#include#include#include#include#define Max(a,b) a>b?a:busing namespace std;const int INF=1005;int dp[INF],visit[INF],v[INF];vector vec[INF];void dfs(int cur){原创 2013-04-29 16:35:58 · 654 阅读 · 0 评论 -
nyoj 372巧克力
点击打开题目链接动态规划#include#include#includeusing namespace std;const int INF=310;int num[INF][INF];int sum_max(int n,int temp[]){ int sum(0),Max(-0xfffff); for(int i=0;i<n;i++) {原创 2013-04-29 09:08:08 · 719 阅读 · 0 评论 -
hdu2191
题目连接点击打开链接简单的多重背包问题,代码如下:#include#include#include#include#define INF 110using namespace std;int dp[INF];void CompletePack(int cost,int weight,int n){ for(int i=cost;i<=n;i++)原创 2013-03-27 11:26:43 · 650 阅读 · 0 评论 -
hdu 3535(混合背包问题)
点击打开题目链接该题属于混合背包问题,而且还带分组。。。#include#include#includeusing namespace std;const int INF=-0xfffff;const int NUM=120;int dp[NUM][NUM],cost[NUM],v[NUM];template T Max(T a,T b){ return (a>b原创 2013-04-09 18:36:43 · 859 阅读 · 0 评论 -
整数划分问题
【转】:整数划分 --- 一个老生长谈的问题: 1) 练练组合数学能力. 2) 练练递归思想 3) 练练DP 总之是一道经典的不能再经典的题目: 这道好题求: 1. 将n划分成若干正整数之和的划分数。 2. 将n划分成k个正整数之和的划分数。 3. 将n划分成最大数不超过k的划分数。 4. 将n划分成若干奇正整数之和的划分数。原创 2013-03-25 16:09:52 · 737 阅读 · 0 评论 -
hdu 4501 小明系列故事——买年货(二维费用背包问题)
题目链接~~点我打开题目哦~~该题是一道二维费用背包问题,用dp[v1][v2][k]表示用v1的钱,v2的积分和k件免费产品时,能够获得的最大价值,设第i件商品的价钱为c1,积分为d1,价值为val,则状态转移方程可写成:dp[v1][v2][k]=max(dp[v1][v2][k],dp[v1-c1][v2][k]+val,dp[v1][v2-d1][k]+val,dp[v1][v2]原创 2013-04-02 15:03:58 · 1126 阅读 · 0 评论 -
hdu 1712 ACboy needs your help(分组背包)
简单分组背包入门,点击打开题目链接#include#include#include#define Max(x,y) x>y?x:yint A[110][110];int f[110];int main(){ int n,m; while(scanf("%d%d",&n,&m) && (m+n)) { for(int i=1;i<=n;i++原创 2013-04-02 16:19:23 · 704 阅读 · 0 评论 -
nyoj 90 整数划分
题目连接点击打开链接该类问题分析(转自网上一位大牛的分析):整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式:n=m1+m2+...+mi; (其中mi为正整数,并且1 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)例如当n=4时,他有5个划分原创 2013-01-25 09:30:52 · 590 阅读 · 0 评论 -
NYOJ 995硬币找零
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=995动态规划问题原创 2014-04-04 18:02:47 · 1106 阅读 · 0 评论