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 ...
随机推荐
- Linux常用命令awk
awk能够处理类似csv这种按行格式的数据,对每一行record按照-F指定的分隔符切割,然后处理.默认支持空格和\t分隔符 1.统计文件里某一列数据等于某个值的个数 -0_djt10.txt 2.拼 ...
- Retrofit Upload multiple files and parameters
Retrofit 的介绍以及基本使用 这里不再说明. 关于多文件上传 以及上传文件的同时携带多个参数说明 网上涉及到的不是太多. 上一张帅图: 代码: apiService: /** params 参 ...
- angularjs之ng-mode获取lobject类型里的键值
有时候数据库定义的时候,用一个对象来代表某个属性,之后直接访问对象就可以获取全部该对象的属性,但是有时需求访问对象中包含中的键值,引用键值的时候可以直接用.来获取对象的键值,比如 对象points: ...
- 【转】彻底解析Android缓存机制——LruCache
彻底解析Android缓存机制——LruCache 关于Android的三级缓存,其中主要的就是内存缓存和硬盘缓存.这两种缓存机制的实现都应用到了LruCache算法,今天我们就从使用到源码解析,来彻 ...
- 进程间通信的两种实现方式(IPC)
进程间通信的两种实现方式(IPC) IPC: iter processing communicate 进程间通信:IPC(iter process communicate)linux free-m 可 ...
- Javaweb学习笔记4—Reuest&Response
今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣 ...
- checkbox设置复选框的只读效果不让用户勾选
在Web开发中,有时候需要显示一些复选框(checkbox),表明这个地方是可以进行勾选操作的,但是有时候是只想告知用户"这个地方是可以进行勾选操作的"而不想让用户在此处勾选(比如 ...
- Python Linked List
上周日教导一个科班非技术的朋友学习 Python 编程.他的 Python 水平大概就是看了几篇短的 Python 介绍博客.会流程控制和全局函数编写. 具体教导思路是从自己实现一个链表出发,研究学习 ...
- Types of Security Vulnerabilities
1)内存空间安全.2)参量级别数据安全:3)通信级别数据安全:4)数据访问控制:5)通信对象身份确认. https://developer.apple.com/library/content/docu ...
- 看Spring Data如何简化数据操作
Spring Data 概述 Spring Data 用于简化数据库访问,支持NoSQL 和 关系数据存储,其主要目标是使数据库的访问变得方便快捷. SpringData 项目所支持 NoSQL 存储 ...