比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=62369#overview
uva-1025.
间谍坐火车。紫书例题9-1.
题意:有个间谍从火车站1出发。给出每两段车站之间要用的时间和发车时间。要求在时间T时到达第n个车站。在这段时间,她要尽可能地呆在行驶着的火车上,使她在各个车站停留的时间最小,问停留时间最小是多少。
解法:
1、用动态规划。设dp[i][j]表示当前状态为在时间i到达第j个车站。那么接下来有三种决策。
在车站等一分钟:
dp[i+1][j] = min (dp[i+1][j],dp[i][j] + 1);
坐上往右开的火车:
dp[i+t[j]][j+1] = min(dp[i][j],dp[i + t[j]][j+1]);
坐上往左开的火车:
dp[i+ t[j-1]][j-1] = min(dp[i][j], dp[i + t[j-1]][j-1]);
2、判断能否坐上火车时,要先预处理好在i时刻有没有火车刚好到达j车站。
教训:
1、是在“T时刻”到达n!不是在“T时刻之前”到达n!就这英语水平还能过六级我也是醉了。
2、把hastrain[path][N][1] = 1;打错成hastrain[path][N][0] = 1;了。主要是我两个相同的代码复制下来,不同之处没改全。
3、j改成j-1之后,有个地方漏改了!还是j.
4、以后还是想!!清!!楚!!再上手写吧。免得改来改去会漏改一些地方。
uva-437
选砖块垒高高的柱子。
吐槽一下:立方体是六个面都是正方形的啊喂!维基百科在此:http://zh.wikipedia.org/zh-cn/%E7%AB%8B%E6%96%B9%E9%AB%94 刘汝佳居然写的是长宽高不一样的“立方体”。对了。维基百科是纯公益的,非常令人佩服的,不靠任何广告收入来维持的,如果大家有闲钱,可以去捐赠一下。
题意:给你n种砖块,每种都有无穷多个。要求垒一个尽可能高的柱子。使得每个面的长宽都严格大于它上面的那个砖块的长宽。
解法:
1、把所有的面都用一个数字表示。共有3n个数字
2、把严格小于的两个面之间连一条边。(这个方法好棒呀!我怎么没想到!)
3、