摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2059很显然的加血的那种类型的题目,比赛遇过一次。看上面这个图,就是到达每站的时候,把可能通过其他方式到达该站的时间都算出来,然后取最小值,View Code #include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#define maxn 10000#define inf ~0U>>1using namespace std;int dis[maxn];doubl 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2571就是很普通的根据题意递推了。不过题意有个坑的地方,有负值。所以初始化必须为-inf。被坑了好长时间。另外 不知道为什么 define 负数就错的 ,非得 改成 const int inf 。以后就这样用吧。和以前比赛做的那个走格子几乎是同样的。View Code #include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#define maxnconst int inf= 阅读全文
摘要:
http://poj.org/problem?id=2385和天上掉馅饼那个差不多。dp[i][j]表示第i分钟移动了j步。一开始直奔馅饼的那个想法,所以就需要三唯的: i 第几分钟 ,j 哪个位置 ,k 移动了几步但是本题 只要两个位置 ,所以可以用k来表示了j所以就有了状态转移方程:dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+t[i][(j+1)%2];另外要注意初始化:View Code #include<iostream>#include<string.h>#include<stdio.h>#include<al 阅读全文
摘要:
fill ( first, last, value );作用是设置指定范围内 [first,last).的元素的值为value;范围包括开始元素,单不含结束元素。*min_element(dp[n],dp[n]+m+1)返回最小值。 阅读全文
摘要:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2972一开始以为是那种类似加血的题目,但是这个题和加血的有个区别就是,是每一段有一个速度值,表示成加血的那样的状态有点复杂。所以,表示成简单一点的dp[i][j]表示到达第i段还剩j的force。所以显然根据题目所说的:有状态转移方程:dp[i][j]=min(dp[i-1][j]+t2,dp[i][j]);if(j>=f1)dp[i][j-f1]=min(dp[i-1][j]+t1,dp[i][j-f1]);int temp=j+f2;if(temp>m)t 阅读全文