HDU 1278
题目大意:
从(1,1)到(n,n),每经过一个点都要花费一定的时间,问花最短时间的路径有多少条
dfs+dp
先用bfs把所有到n花费的时间逆向dp计算一遍
再用dfs不断找到前一个对应的较短路径的点不断搜索路径
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
#define LL long long
#define N 52 struct node{
int x,y;
}; queue<node> q;
int dir[][]={{,},{,-},{,},{-,}},dp[N][N],mat[N][N],n;
LL s[N][N]; void bfs()
{
dp[n][n]=mat[n][n];
node a;
a.x=n,a.y=n;
q.push(a);
while(!q.empty()){
node b=q.front();
q.pop();
for(int i=;i<;i++){
int xx=b.x+dir[i][];
int yy=b.y+dir[i][];
if(xx>=&&xx<=n&&yy>=&&yy<=n){
if(dp[xx][yy]==||dp[xx][yy]>dp[b.x][b.y]+mat[xx][yy]){
node c;
c.x=xx,c.y=yy;
q.push(c);
dp[xx][yy]=dp[b.x][b.y]+mat[xx][yy];
}
}
}
}
} LL dfs(int x,int y)
{ if(x==n&&y==n) return ;
if(s[x][y]) return s[x][y];//在记忆化搜索中,就是利用已知的数据直接代入,
//避免重复计算,在此就是把数据保存在s中
for(int i=;i<;i++){
int xx=x+dir[i][];
int yy=y+dir[i][];
if(xx>=&&xx<=n&&yy>=&&yy<=n){
if(dp[xx][yy]<dp[x][y]){
s[x][y]+=dfs(xx,yy);
}
}
}
return s[x][y];
} int main()
{
while(~scanf("%d",&n)){ memset(dp,,sizeof(dp));
memset(s,,sizeof(s)); for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
scanf("%d",&mat[i][j]);
}
} bfs(); /*for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d ",dp[i][j]);
}
puts("");
}*/
printf("%I64d\n",dfs(,));
}
return ;
}
HDU 1278的更多相关文章
- hdu 1278 逃离迷宫
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 51Nod 1278 相离的圆
51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- (转)Unity优化之减少Drawcall
转载:http://www.jianshu.com/p/061e67308e5f Unity GUI(uGUI)使用心得与性能总结 背景和目的 小哈接触Unity3D也有一段时间了,项目组在UI解决方 ...
- 高阶组件(Higher-Order Components)
有时候人们很喜欢造一些名字很吓人的名词,让人一听这个名词就觉得自己不可能学会,从而让人望而却步.但是其实这些名词背后所代表的东西其实很简单. 我不能说高阶组件就是这么一个东西.但是它是一个概念上很简单 ...
- laravel 配置站点域名
访问一直报404错误 laravel端: default.conf server { listen 80; server_name api.xxxx.com; ...
- phpcms v9模板制作教程
phpcms v9模板制作教程(转载) 第一节 1.首先下载phpcms v9的集成安装包并安装,这里就不详细说明了. 2.本地调试建议大家使用APMserver,或者wampserver等,可以到P ...
- nginx,php-fpm的安装配置
在centos7.2的系统下安装nginx和php-fpm nginx 安装 yum install -y nginx 即可完成安装 配置 由于之前项目使用的是apache,所以项目目录在var/ww ...
- COGS 2274. [HEOI 2016] tree
★☆ 输入文件:heoi2016_tree.in 输出文件:heoi2016_tree.out 简单对比时间限制:1 s 内存限制:128 MB 这道题数据弱到炸了 . 第一次做用树刨 ...
- HttpClient 接口调用
String url = "http://127.0.0.1:8080/api"; //然后根据表名获取公司信息 HttpPost httppost = new HttpPost( ...
- Dockerfile 中的 CMD和ENTRYPOINT 两兄弟
CMD 先说老大 CMD 当一个容器准备好运行之后,需要找一个指定命令来创建一个初始进程并运行. 一,/bin/sh -c 因为某种意义上一个Dockerfile其实可以理解是一个简化版bash 脚本 ...
- vscode 打开新文件不替换旧文件
设置 "workbench.editor.enablePreview": false
- Spread / Rest 操作符
Spread / Rest 操作符指的是 ...,具体是 Spread 还是 Rest 需要看上下文语境. 当被用于迭代器中时,它是一个 Spread 操作符:(参数为数组) function foo ...