http://acm.hdu.edu.cn/showproblem.php?pid=1428

dijstra+dp;

 #include <cstdio>
#include <queue>
#include <cstring>
#include <algorithm>
#define maxn 100
#define ll __int64
using namespace std;
const int inf=<<; int g[maxn][maxn];
bool vis[maxn][maxn];
ll dis[maxn][maxn];
ll dp[maxn][maxn];
int n;
int dir[][]={{,},{,-},{,},{-,}};
struct node
{
int x,y,w;
bool friend operator <(node a,node b)
{
return a.w>b.w;
}
}st1,st; void dijstra(int x,int y)
{
memset(vis,false,sizeof(vis));
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
dis[i][j]=inf;
}
}
priority_queue<node>q;
st.x=x;
st.y=y;
st.w=g[x][y];
dis[x][y]=g[x][y];
q.push(st);
while(!q.empty())
{
st1=q.top();q.pop();
if(vis[st1.x][st1.y]) continue;
vis[st1.x][st1.y]=true;
for(int i=; i<; i++)
{
int xx=st1.x+dir[i][];
int yy=st1.y+dir[i][];
if(xx>=&&xx<n&&yy>=&&yy<n&&!vis[xx][yy])
{
if(dis[st1.x][st1.y]+g[xx][yy]<dis[xx][yy])
{
dis[xx][yy]=dis[st1.x][st1.y]+g[xx][yy];
st.x=xx;
st.y=yy;
st.w=dis[xx][yy];
q.push(st);
}
}
}
}
} ll dfs(int x,int y)
{
if(dp[x][y]) return dp[x][y];
for(int i=; i<; i++)
{
int x1=x+dir[i][];
int y1=y+dir[i][];
if(x1>=&&x1<n&&y1>=&&y1<n&&dis[x1][y1]<dis[x][y])
dp[x][y]+=dfs(x1,y1);
}
return dp[x][y];
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
memset(g,,sizeof(g));
for(int i=; i<n; i++)
{
for(int j=; j<n; j++)
{
scanf("%d",&g[i][j]);
}
}
dijstra(n-,n-);
memset(dp,,sizeof(dp));
dp[n-][n-]=;
printf("%I64d\n",dfs(,));
}
return ;
}

hdu 1428 漫步校园的更多相关文章

  1. [HDU 1428]--漫步校园(记忆化搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1428 漫步校园 Time Limit: 2000/1000 MS (Java/Others)    M ...

  2. HDU 1428 漫步校园(记忆化搜索,BFS, DFS)

    漫步校园 http://acm.hdu.edu.cn/showproblem.php?pid=1428 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于 ...

  3. HDU 1428漫步校园

    漫步校园 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校 ...

  4. HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)

    题目地址:HDU 1428 先用BFS+优先队列求出全部点到机房的最短距离.然后用记忆化搜索去搜. 代码例如以下: #include <iostream> #include <str ...

  5. HDOJ 1428 漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. 搜索专题: HDU1428漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. Hdu428 漫步校园 2017-01-18 17:43 88人阅读 评论(0) 收藏

    漫步校园 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  8. HDU 1428

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. hdu 1428(很好的一道题,最短路+记忆化搜索)

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

随机推荐

  1. 实现在线阅读pdf功能--php

    在网上找了很久,想要实现一个在线阅读word,pdf文件的功能,网上的资料很多,但是提到真正怎么实现的比较少.现在我来简单说明一下,我实现的过程. 我现在只能实现在线阅读pdf(将word等转换成pd ...

  2. 三元运算符和GridView数据显示

    三元运算符嵌套使用:<%# Eval("InsertType").ToString() == "0" ? "数据库" : Eval(& ...

  3. (转)open和fopen的区别:

    fopen与open的区别 open和fopen的区别: 1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓 ...

  4. 试用mysql的infobright引擎

               海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),20 ...

  5. 【转】用户空间使用i2c_dev--不错

    原文网址:http://blog.csdn.net/yuanlulu/article/details/6161706 ========================================= ...

  6. Highcharts接收后台传来的json对象值无法显示

    在highcharts接收后台传来的json对象网上已经有很多的介绍,在此不多做说明,这里想记录一笔的是在接收的json解析后的value值是String类型的,而highcharts里的data数组 ...

  7. Fancy

    Fancy 在欢喜您可以轻易发现并购买由全球最具品味的社区为您挑选的精美商品.

  8. 2016"百度之星" - 资格赛(Astar Round1) 1001

    思路:第一个做法就是:每读入起始位置i和结束位置j,就从这位置i到位置j计算,可是TLE了,后面我想想要是我输入一个最长的字符串,且以最大次数计算开始位置1到结束位置100000,那么这计算量是很大的 ...

  9. vi常用命令集锦

    转载,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6575232 vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十分 ...

  10. MySQL查询随机数据的4种方法和性能对比

    从MySQL随机选取数据也是我们最常用的一种发发,其最简单的办法就是使用”ORDER BY RAND()”,本文介绍了包括ORDER BY RAND()的4种获取随机数据的方法,并分析了各自的优缺点. ...