2012年7月16日

noi 2009 管道取珠 动态规划

摘要: 这是一道非常精致的递推问题,程序非常短,但很难想到。问题的关键是对目标的转化以及递推状态的设计。首先对 ∑ai^2进行转化,将其这样理解:用A和B分别表示一种取珠的方法,将结果相同的两种取珠方法(不管这两种取珠方法本身是否相同)记为(A, B),不难发现∑ai^2就是所有这样的(A, B)的对数。设状态f(a1, b1, a2, b2),如果f(a1, b1, a2, b2) = K,表示存在K对不完全相同的(A, B),使得A方法已经取出了第一个串的前a1个字符及第二个串的前b1个字符,B方法已经取出了第一个串的前a2个字符以及第二个串的前b2个字符,同时A方法与B方法得到的结果相同。显然, 阅读全文

posted @ 2012-07-16 20:33 myoi 阅读(1100) 评论(0) 推荐(0) 编辑

noi 2009 二叉查找树 动态规划

摘要: 思路:先把权值离散化按数据值排序sum[i]为前i个节点频度和dp[i][j][w]表示把节点[i,j]合并成一颗根节点权值不小于w的子树所需的访问代价与修改代价的最小和dp[i][j][w]=min(dp[i][k-1][w]+dp[k+1][j][w]+sum[j]-sum[i-1]+K,dp[i][k-1][a[k].weight]+dp[k+1][j][a[k].weight]+sum[j]-sum[i-1](a[k].weight>=w))(i<=k<=j)ans=dp[1][n][1]; 1 #include<iostream> 2 #include& 阅读全文

posted @ 2012-07-16 08:12 myoi 阅读(490) 评论(0) 推荐(0) 编辑

导航