题目大意很简单,和普通的石子合并过程没有区别,只是花费变成了一个多项式,若连续的任意个石子权值和为x,那么代价变为F(x) = sigma(a[i] * x^i),求将n堆石子合并为一队的最小花费。对于暴力的做法,复杂度是O(n^3)的,所以要优化我们知道当a, b, c, d(a 2 #incl....
分类:
其他好文 时间:
2015-05-11 08:46:09
阅读次数:
166
题意:题目:有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D。但是边上有一个小黑屋(其实就是个堆栈),可以一定程度上调整上场程序dp[i][j]表示从第i个人到第j个人这段区间的最小花费(是只考虑这j-i+1个人,不需要考虑前面有多少人)那么对于dp[i][j]的第...
分类:
其他好文 时间:
2015-05-07 10:06:10
阅读次数:
153
题意:
给一个01串,相邻的01交换代价为X,否则为Y。
问把全部1变到0前面的最小费用。
思路:
对于 01011->11100
如果只靠相邻位移动是需要5步的。
然而不管怎么移动,步数是固定的。
那我们就把最前面的0和最后面的1交换
假设0在i,1在j。我们交换的代价就是min(y,x*(j-i))
然后累加求和就好了!
很棒的脑洞题!
代码:
#include"cst...
分类:
其他好文 时间:
2015-05-03 19:07:27
阅读次数:
116
// uva 10003 Cutting Sticks 区间dp
// 经典的区间dp
// dp(i,j)表示切割小木棍i-j所需要的最小花费
// 则状态转移为dp(i,j) = min{dp(i,k) + dp(k,j) + a[j]-a[i])
// 其中k>i && k<j
// a[j] - a[i] 为第一刀切割的代价
// a[0] = 0,a[n+1] = L;
// dp数组初...
分类:
其他好文 时间:
2015-05-01 23:55:26
阅读次数:
378
// uva348 最优矩阵链乘
// 典型的区间dp
// dp[i][j] 表示矩阵i到j链乘所得到的最小花费
// dp[i][j] = min(dp[i][k]+dp[k+1][j]+a[i].pl*a[k].pr*a[j].pr);
// 在区间i到j上找一个k使得dp[i][k]+dp[k+1][j]这两部分的和在加上最后的
// a[i].pl*a[k].pr*p[i].pr的最小值...
分类:
其他好文 时间:
2015-04-29 10:08:43
阅读次数:
138
题目大意:有若干城市,有些城市可以到达并且有花费,初始在城市1,要求旅游k天,并且最终在城市n,求是否能达到,若能求最小花费。
用d[i][j]表示第i天在城市j的最小花费,从d[i-1][u]递推而来,其中u是第i-1天所在的城市。
#include
#include
int a[40][40][100];
int d[1100][30];
int main(void)
{
...
分类:
其他好文 时间:
2015-04-29 00:50:02
阅读次数:
119
题意:有一个起始站点,从这里送n个学生去其余的n-1个站点邀请人们去CSS,然后再返回CSS,使得总的花费最小。注意每次只能送一个,返回时每次也只能送一个,而且每条路是单向的。
分析:这相当于一个有向图,我们只需两次调用SPFA算法即可,第一次求出初始站点(在这里是1)到其它所有站点的最小花费,然后相加;第二次将图反向建立,即所有的边反向,再求出初始站点(这里是1)到其它站点的最小费用,之后相加...
分类:
编程语言 时间:
2015-04-26 16:46:25
阅读次数:
213
分析:首先求强连通分量的个数,然后进行缩点,最后求出最终答案。
1、求强连通分量的个数使用tarjan算法。
2、缩点为另外一个图,通过tarjan算法求出的结果进行。缩点后的图中求出每个点的入度。
3、求出每个强连通分量中的最小花费。
4、根据缩点后图的入度求出最终结果。
#include
#include
#include
using namespace std;
vect...
分类:
编程语言 时间:
2015-04-25 15:12:01
阅读次数:
182
【题目链接】:click here~~
【题目大意】:已知某几条道路已经修完,求全部道路要通路的最小花费
【解题思路】:基础的Kruskal算法了,按照边的权值从小到大排序一遍,符合条件加入到生成树中
代码:
/*
Author:HRW
kruskal+并查集
*/
#include
using namespace std;
const int max_v=105;
const int...
分类:
编程语言 时间:
2015-04-25 10:45:48
阅读次数:
208
题意:给个矩阵,矩阵里有一些人和房子(人数和房子数相等),一个人只进一个房子(可以路过房子而不进),每走一步花费1美金,求所有人都进入房子的最小花费,这是典型的二分图带权匹配问题。 这题就是建图有点麻烦,但绝不抽象,直接用BFS遍历每个人到所有房子的距离,遍历出一个就拉一条人到房子有向边,建完...
分类:
其他好文 时间:
2015-04-21 14:34:27
阅读次数:
120