DP
文章平均质量分 73
epiker
这个作者很懒,什么都没留下…
展开
-
经典问题之01背包
动态规划像一个生产车间有好多连续的生产线 一个阶段就是一个生产线 状态就是每个生产线物品的状态 决策就是生产线上根据物品的状态而对物品的操作.01背包问题:阶段: 第一生产线(放不放第一个物品)→第二生产线(放不放第二个物品)→.......→第N生产线(放不放第N个物品)第一生产线共有n-v1个选择: v=V时放不放 v=V-1时放不放.....v=V-v1时放不放然后移原创 2012-04-10 19:04:01 · 348 阅读 · 0 评论 -
经典问题之最长公共子序列
NYOJ 36 最长公共子序列方法一:先选择状态的存储结构,即最优子问题,用f(i,j)表示字符串A的前i位和字符串B的前j位的最长公共子序列.阶段:很明显共有strlen(A)个阶段每个状态的决策: if(a[i]==a[j]) f(i,j)=f(i-1,j-1)+1原创 2012-04-10 19:00:55 · 480 阅读 · 0 评论 -
Ural 1017
Vijos P1117 (2001年NOIP提高第二题) 描述Description 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入格式 InputFormat 输入n,k(6 输出格式 Out转载 2012-04-30 16:08:25 · 411 阅读 · 0 评论 -
Ural 1002 Phone number
dp[i]表示数字串第i位之前最少有多少单词,以数字串长度为阶段,每个阶段共有n个状态,类似01背包..不同的是,单词可以放不止一次...转移方程dp[i]=min(dp[i],dp[i-word[j].length()]+1);关键是记录,dp[i]每更新一次状态,记录下j,最后一个j肯定用单词最短的那个单词,接着向前遍历.....#include#include#include原创 2012-05-02 17:17:42 · 404 阅读 · 0 评论 -
NYOJ 61 传纸条
类似与数塔,不过是双进程的....可以用f(k,x1,y1,x2,y2)表示第k步第一个纸条在(x1,y1)时和第二个纸条在(x2,y2)时的最优解...当然要保证x1!=x2&&y1!=y2...由于用的内存太多,可以压缩一下,用三维数组来表示(因为走的是方格,所以k和x1+y1和x2+y2的关系是一定的),f[k][i][j]来表示第k步第一个纸条和第二个纸条横坐标分别在i和j时的最优解,只需原创 2012-04-20 21:23:19 · 3085 阅读 · 0 评论 -
NYOJ 573 算概率
链接:算概率dp[i][j],第一维为:i 代表位数,第二维坐标为:j 代表余数,设该位取1的概率为pi,以位数为阶段,那么状态转移方程为: dp[i+1][(j*2)%mod]+=dp[i][j]*(1-pi); dp[i+1][(j*2+1)%mod]+=dp[i][j]*pi;不知道用枚举为什么就不对..... #include#include#includ原创 2012-07-24 04:51:41 · 449 阅读 · 0 评论