dp hdu5433 Xiao Ming climbing
2015-09-14 10:25
253 查看
传送门:点击打开链接
题意:告诉你图,然后告诉你初始斗气,你当前的位置,终点位置,每走一步所需要的体力等于两个位置的权值之差除以当前斗气k,然后斗气减一
思路:因为数据很小,所以最简单的方法当然是动态规划去做
设d[i][j][k]表示当前在(i,j)且斗气为k时消耗的最小体力,然后向4个方向转移就行了
题意:告诉你图,然后告诉你初始斗气,你当前的位置,终点位置,每走一步所需要的体力等于两个位置的权值之差除以当前斗气k,然后斗气减一
思路:因为数据很小,所以最简单的方法当然是动态规划去做
设d[i][j][k]表示当前在(i,j)且斗气为k时消耗的最小体力,然后向4个方向转移就行了
#include<map> #include<set> #include<cmath> #include<stack> #include<queue> #include<cstdio> #include<cctype> #include<string> #include<vector> #include<cstring> #include<iostream> #include<algorithm> #include<functional> #define fuck printf("fuck") #define FIN freopen("input.txt","r",stdin) #define FOUT freopen("output.txt","w+",stdout) using namespace std; typedef long long LL; const int MX = 50 + 5; const int INF = 0x3f3f3f3f; int dist[][2] = {{1, 0}, { -1, 0}, {0, 1}, {0, -1}}; int Sx, Sy, Ex, Ey; double d[MX][MX][MX]; char S[MX][MX]; int main() { int T, m, n, w; //FIN; scanf("%d", &T); while(T--) { scanf("%d%d%d", &m, &n, &w); for(int i = 1; i <= m; i++) { scanf("%s", S[i] + 1); } scanf("%d%d%d%d", &Sx, &Sy, &Ex, &Ey); for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { for(int k = 0; k <= w; k++) { d[i][j][k] = INF; } } } d[Sx][Sy][w] = 0; for(int k = w; k >= 2; k--) { for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { if(d[i][j][k] == INF) continue; for(int t = 0; t < 4; t++) { int nx = i + dist[t][0]; int ny = j + dist[t][1]; if(nx < 1 || nx > m || ny < 1 || ny > n || S[nx][ny] == '#') continue; double value = abs(S[i][j] - S[nx][ny]) * 1.0 / k; d[nx][ny][k - 1] = min(d[nx][ny][k - 1], d[i][j][k] + value); } } } } double ans = INF; for(int k = 1; k <= w; k++) { ans = min(ans, d[Ex][Ey][k]); } if(ans == INF) printf("No Answer\n"); else printf("%.2lf\n", ans); } return 0; }
相关文章推荐
- Android-监听软键盘状态
- UISegmentedControl的详细使用
- 无法识别的配置节system.serviceModel 解决方案
- 公钥,私钥和数字签名这样最好理解
- ARM9 ADS8344 SPI驱动移植 (一)
- 欢迎使用CSDN-markdown编辑器
- UIGestureRecognizer
- iOS开发UI篇—九宫格坐标计算
- iOS开发UI篇—懒加载
- Little shop of flowers - SGU 104 (DP)
- 20150910-Linux程序包管理
- 《Computer Networks》Fifth Edition中文版笔记
- 怎样解决在Word中复制黏贴后出现MathType公式乱码
- [译]从LinkedIn,Apache Kafka到Unix哲学
- Spring工作原理及其作用
- Session和Cookie的区别与联系
- HTML5表单提交和PHP环境搭建
- AOD.net
- iOS开发UI篇—简单的浏览器查看程序
- [转载] Rss 与 Feed 的概念区别