题目大意:孙悟空要找到一条花费时间最短的路径,路上为S的代表有蛇,经过需多花一分钟,其他情况下都是走过花费一分钟,但数字必须依次得到,最后到了唐僧处,可以经过也可以救出,救出前提是得到所有种类的钥匙这道题,我们不断找到到达每一个点的不同状态下的最小花费时间,用dp[N][N][11][status]...
分类:
其他好文 时间:
2014-09-25 03:20:40
阅读次数:
312
题意: 给出n个城市和m条路,每个城市只能经过一次,想要旅游所有的城市,求需要的最小花费(路径的长度)。对于我来说,这题就是验证模版。把输入数据全部改为负数,错误了返回1。最后乘以-1就行了。 1 #include 2 #include 3 #include 4 #include 5 using ....
分类:
其他好文 时间:
2014-09-25 01:25:47
阅读次数:
279
UVA 11280 - Flying to Fredericton
题目链接
题意:给定一些国家,和两个国家间的花费,现在有一些询问,询问每次最多转k次飞机,最小花费
思路:dijkstra变形,多开一维表示转机次数即可
代码:
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-09-25 01:22:28
阅读次数:
295
UVA 10246 - Asterix and Obelix
题目链接
题意:给定一个图,每个点有一个代价,边有一个代价,现在有q次询问,每次询问从u到v的最小花费,花费的计算方式为,路径代价加上路径上最大代价结点的代价
思路:枚举最大代价结点,然后做dijkstra,做的过程中忽略掉比枚举点更大代价的点,然后更新所有的答案,预处理完成后每次询问就可以在O(1)时间内完成了
...
分类:
其他好文 时间:
2014-09-24 22:30:48
阅读次数:
250
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4415
题目意思:
要杀死n个敌人,每个敌人有两个属性a和b,a表示杀他所需要的能力值,b表示杀掉他后可以免费再杀b个敌人。告诉初始能力值,求能杀的最多的敌人,及杀掉那么多敌人的最小花费。
解题思路:
分类+贪心
这道题比较难,也比较经典。好题。
首先把敌人按b值是否为零分成两类A...
分类:
其他好文 时间:
2014-09-24 16:08:17
阅读次数:
148
大意:需要把一根长木棍锯成一些短木棍短木棍的长度是告诉你的每一次锯的花费为要锯的改段的长度问最小花费比如n个小木棍长度分别5 8 8也就是相当于你有一根21的木棍 现在需要把它锯成 上述的三段每次只能把一个木棍锯成两段比如21可以锯成13 和 8 但是由于选择的是21 所以花费为21第二次把13 ....
分类:
其他好文 时间:
2014-09-23 22:04:35
阅读次数:
237
题目:uva 10003 Cutting Sticks
题意:给出一根长度 l 的木棍,要截断从某些点,然后截断的花费是当前木棍的长度,求总的最小花费?
分析:典型的区间dp,其实和石子归并是一样的,花费就是石子的和,那么久不用多说了。
AC代码:
#include
#include
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-09-18 18:53:24
阅读次数:
201
题目大意:N个点M条无向边,每个点有可能有红绿灯,或者是加油站,或者单单是一个点。红绿灯太多会让人烦,太久不加油车子就会开不动,问最多通过K次红绿灯,从“start”点到“end”点的最少花费是多少。
思路:只能最多通过K次红绿灯,可以依据这个建分层图。f[ i ][ j ]为在已经通过i次红绿灯后,在j点时的最小花费。这只是总体的思路,具体是实现起来还是有其他一些小问题。
题目中有一...
分类:
其他好文 时间:
2014-09-11 17:23:12
阅读次数:
220
区间动态规划是从区间的角度来考虑问题的。对于每段区间,它的最优值是由几段更小的区间的最优值得到,这算是分治思想的一种应用吧。就拿http://acm.fafu.edu.cn/problem.php?id=1502合并石子这一题来说。要求得区间1-->n石子合并的最小花费设dp[1][n] 为合并区间...
分类:
其他好文 时间:
2014-09-05 12:54:41
阅读次数:
176
/*
对于每一个群,我们有两种换发:
1.群里换,拿群里最小的数t与其他每个数交换,共k-1次,花费为:sum+(k-2)*t.
2.将这个数列最小的数minn,拉入这个群,与该群最小的数t交换,然后用这个最小的数与其他数交换k-1次,然后再将minn与t换回来,这样
花费为:sum+t+(k+1)*minn
那么最小花费我们取两者中最小的,即sum+min{(k-2)*t,t+(k+1)*min...
分类:
其他好文 时间:
2014-09-02 15:59:54
阅读次数:
189