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 ...
随机推荐
- [未读]backbonejs应用程序开发
买来就没有动过,那阵子刚好离职找工作,之后学backbone的劲头就过去了= =
- Hadoop体系结构管理
一.查看Zookeeper信息 [hadoop@weekend01 ~]$zkServer.sh status JMX enabled by default Using config: /hadoop ...
- AJPFX总结Collection集合(下)
List集合特有方法 特有方法.凡是可以操作角标的方法都是该体系特有的方法. 增 add(index,element);在指定位置添加元素 addAll(index ...
- QQ面板拖拽(慕课网DOM事件探秘)(上)
QQ面板拖拽,效果如图 JavaScript代码如下: function getByClass(clsName, parent) { var oParent = parent ? document.g ...
- 【经验总结】关于使用某些第三方插件库元素设置display:none后重新show不显示的问题;(display、opacity、宽高0的使用场景)
display:none 直接取消元素所占用的位置(但是元素还是存在的),后面元素看他就相当于不存在了: opacity:0 隐藏,但是其依旧占用位置: height.width:0 和displa ...
- ios---setContentOffset
UIView * farmeView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self. ...
- javaee 第五周作业
一.Ajax技术 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...
- vue 数组对接字符串 传值时候,join(',') 一下 watch
vue 数组对接字符串 传值时候,join(',') 一下 watch watch: { 'tFill.otherDescArr': function (newVal, oldVal) { this. ...
- python常用模块之random
random模块 import random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3)) ...
- QT+UI界面初识+界面与编辑区结合操作
图片中时UI界面的初识,了解界面部件都是干啥的: 有了界面之后,使得QT的开发变的更加的便捷,但是在ui界面有时满足不了的功能,就需要使用代码解决,怎么利用代码呢? 首先:打开程序编辑区: #incl ...