还是回文时间限制:2000 ms | 内存限制:65535 KB 难度:3描述判断回文串很简单,把字符串变成回文串也不难。现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费。那么,将字符串变成回文串的最小花费是多少呢?输入多组数据第一个有两个数n,m,分别表示...
分类:
其他好文 时间:
2015-01-16 18:35:46
阅读次数:
147
题目大意:给出一个不整齐的路面,可以将一个路面升高或者降低,都需要话费|x - x'|的费用,把路面修正成单调不降或单调不升的最小花费是多少。
思路:路面的高度跨度有点大啊,先离散化。之后f[i][j] 表示到i为止路面保证单调不降并且最高高度为j的最小花费是多少,利用一个前缀和优化一下。单调不升也一样,简单DP水过。。
CODE:
#include
#include ...
分类:
其他好文 时间:
2015-01-14 15:37:32
阅读次数:
231
题目大意:
给你一个字符串Σ,我们假设它的长度为L,然后再给你两个字符串λ,γ,接下来就是一个L*L的矩阵,i行j列表示Σ[i]变换成Σ[j]的花费。
然后要你求出两个长度相等的字符串a,b,使得λ是a的子串,γ是b的子串,然后使得a[i]变换成b[i]的花费总和最小,输出最小花费和a,b。
解题思路:
很明显的DP题,和LCS很像,定义f[i][j]表示a的前i个与b的前...
分类:
其他好文 时间:
2015-01-14 14:21:37
阅读次数:
149
题目大意:给出一棵有根树,n组询问,每一组询问给出树上的一些关键点,问割掉一些边使得根与这些点不联通的最小花费是多少。总询问的点不超过O(n)。
思路:基础思路是每一次询问做一次O(n)的DP,这本来已经够快了,但是有很多询问,这样做就n^2了。注意到所有询问的点加起来不超过O(n),也就是说每次询问的点可能很少。那么我们为何要将所有点扫一次?只需要将询问的点重新建树,然后跑树形DP,这...
分类:
其他好文 时间:
2015-01-08 09:40:04
阅读次数:
480
题目链接:http://poj.org/problem?id=1935题意:带边权的树,给点一个根,问从根出发遍历某些点,所需的最小花费。分析:树上任意两点的路径是唯一的,直接dfs一遍,可以得出从源点出发访问完需要到达的点再回到源点的总值sum,而这里访问后不需要回到源点,找出距离源点最远的点的长...
分类:
其他好文 时间:
2015-01-05 00:23:18
阅读次数:
130
题解:第一问论文题。。。见胡伯涛最小割。考虑第二问。我们发现求完最小割之后直接从s bfs到的点作为1就可以达到最小花费了,但这是为什么呢?因为我们从s bfs到的点一定属于s割,而t点bfs到的点一定属于t割,剩下的点所属的割不确定。那我们不妨认为它们都是t割,这样花费就最少了。代码: 1 #i....
分类:
其他好文 时间:
2014-12-28 00:24:23
阅读次数:
226
题目大意:给你几个岛的坐标,只有两个岛的距离在10~1000米范围内的岛才能
建立道路。每米道路花费100元。问:能否建立连接全部岛屿的道路。若能,输出
建立道路的最小花费;若不能输出"oh!"。
思路:主要是建图问题,纠结在Prim上半天,最后才发现只要建图的时候多想想就
好了。建图的时候,只有满足条件的才能赋值距离,否则就为INF(假设的无穷大)。
Prim求最小生成树的时候,若没有找到与当前链接岛屿最近的满足建造条件的道路,
就直接输出"oh!",并退出。否则就继续查找,直到最后输出最小花费。...
分类:
其他好文 时间:
2014-12-25 11:21:17
阅读次数:
187
题意: 给你一张图,N个点(0~N-1),m条边,国王要从0到N-1,国王携带一个值,当走到一条边权大于此值的边时,要么不走,要么提升该边的边权,提升k个单位花费k^2块钱,国王就带了B块钱,问能携带的最大值是多少。解法: 二分此值,然后BFS跑遍每个点,记录到达每个点的最小花费Mincost,如果...
分类:
其他好文 时间:
2014-12-17 14:20:15
阅读次数:
233
题目:poj 3723 Conscription
题意:要征兵n个男兵和m个女兵,每个花费10000元,但是如果已经征募的男士兵中有和将要征募的女士兵关系好的,那么可以减少花费,给出关系,求最小花费。
分析:这个题目初始一个是个二分图,以为可以从这里入手,但是这个题目这个性质没用。
初始花费没人10000,那么减去其中有关系的就是当前的花费。
要是花费最少,那么减去的最大即...
分类:
其他好文 时间:
2014-12-06 10:07:29
阅读次数:
209
题目链接:点击打开链接
题意: 一根长度为L 的木棒,要求要切割n次,给出n次需要切割的位置,每次切割花费为当前段的总长度。求最小花费。
思路:。。一开始想了好久也没往区间DP那方面想QAQ。设 dp[i][j] 为切割[i,j] 区间的最小花费,状态转移方程为 dp[i][j]=max(dp[i][k-1]+dp[k+1][j]+a[j+1]-a[i-1]);
#include
#inc...
分类:
其他好文 时间:
2014-12-04 01:10:36
阅读次数:
170