hdu 1428 漫步校园
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 漫步校园的更多相关文章
- [HDU 1428]--漫步校园(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1428 漫步校园 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 1428 漫步校园(记忆化搜索,BFS, DFS)
漫步校园 http://acm.hdu.edu.cn/showproblem.php?pid=1428 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于 ...
- HDU 1428漫步校园
漫步校园 Problem Description LL最近沉迷于AC不能自拔,每天寝室.机房两点一线.由于长时间坐在电脑边,缺乏运动.他决定充分利用每次从寝室到机房的时间,在校园里散散步.整个HDU校 ...
- HDU 1428 漫步校园 (BFS+优先队列+记忆化搜索)
题目地址:HDU 1428 先用BFS+优先队列求出全部点到机房的最短距离.然后用记忆化搜索去搜. 代码例如以下: #include <iostream> #include <str ...
- HDOJ 1428 漫步校园
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 搜索专题: HDU1428漫步校园
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- Hdu428 漫步校园 2017-01-18 17:43 88人阅读 评论(0) 收藏
漫步校园 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- HDU 1428
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- hdu 1428(很好的一道题,最短路+记忆化搜索)
漫步校园 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
随机推荐
- python 反向查找
python 字符串反向查找大部分在正向查找前面加入r eg: str.rfind('str') str.rsplit(',')
- 导入旧数据需要 使用date插件
"@version" => "1", "@timestamp" => "2016-09-12T08:31:06.630 ...
- input里面check 状态检测
if($("#check_status").attr('checked')) //检测checkbox状态 { //checked状态 }else { //不是checked状态 ...
- Oracle与DB2的区别
系统结构概述 首先,我们需要理解 Oracle 使用的架构,并理解它与 DB2 的不同之处.图 1 展示了 Oracle 的系统结构.将该图与 图 2 进行比较,后者显示了 DB2 的系统结构.在阅读 ...
- Block内的强引用
众所周知,当某个对象持有着一个Block的时候,如果在Block内部使用强引用反过来持有这个对象,就会导致引用循环.为了避免引用循环,可以使用__weak修饰符,苹果的官方文档在用代码演示__weak ...
- 01串(dp)
01串 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个, ...
- 第十四个目标(dp + 树状数组 + 线段树)
Problem 2236 第十四个目标 Accept: 17 Submit: 35 Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- Filter简单介绍
一.简单介绍 Filter也称为过滤器,WEB开发者通过Filter技术.对webserver管理的全部web资源:比如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截.从而实 ...
- Error creating bean with name 'memcachedClient'...java.lang.OutOfMemoryError
1,Tomcat启动报错例如以下: Caused by: org.springframework.beans.factory.BeanCreationException: Error creating ...
- linux 常用 命令 笔记二
wget 下载,得到网络上的内容 grep 文件搜索工具 EveryThing is a file in the linux system 安装 cowsay sudo apt-get install ...