hdu1078 bfs
//Accepted 468 KB 812 ms
//bfs+dp
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#include <queue>
;
int map[imax_n][imax_n];
int dp[imax_n][imax_n];
bool vis[imax_n][imax_n];
]={,,-,,,,,-};
int n;
int k;
queue<int > qx;
queue<int > qy;
int max(int a,int b)
{
return a>b?a:b;
}
void bfs()
{
memset(dp,,sizeof(dp));
memset(vis,,sizeof(vis));
while (!qx.empty()) qx.pop();
while (!qy.empty()) qy.pop();
qx.push();
qy.push();
dp[][]=map[][];
vis[][]=true;
while (!qx.empty())
{
int x=qx.front();
qx.pop();
int y=qy.front();
qy.pop();
vis[x][y]=false;
int nx,ny;
;j<;j++)
;i<=k;i++)
{
nx=x+i*d[j][];
ny=y+i*d[j][];
&& nx<n && ny>= && ny<n && map[nx][ny]>map[x][y])
{
if (dp[nx][ny]<dp[x][y]+map[nx][ny])
{
dp[nx][ny]=dp[x][y]+map[nx][ny];
if (!vis[nx][ny])
{
vis[nx][ny]=true;
qx.push(nx);
qy.push(ny);
}
}
}
}
}
;
;i<n;i++)
;j<n;j++)
ans=max(ans,dp[i][j]);
printf("%d\n",ans);
}
int main()
{
&& k==-))
{
;i<n;i++)
;j<n;j++)
scanf("%d",&map[i][j]);
bfs();
}
;
}
hdu1078 bfs的更多相关文章
- 图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)
图的遍历的定义: 从图的某个顶点出发访问遍图中所有顶点,且每个顶点仅被访问一次.(连通图与非连通图) 深度优先遍历(DFS): 1.访问指定的起始顶点: 2.若当前访问的顶点的邻接顶点有未被访问的,则 ...
- 【BZOJ-1656】The Grove 树木 BFS + 射线法
1656: [Usaco2006 Jan] The Grove 树木 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 186 Solved: 118[Su ...
- POJ 3278 Catch That Cow(bfs)
传送门 Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 80273 Accepted: 25 ...
- POJ 2251 Dungeon Master(3D迷宫 bfs)
传送门 Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28416 Accepted: 11 ...
- Sicily 1215: 脱离地牢(BFS)
这道题按照题意直接BFS即可,主要要注意题意中的相遇是指两种情况:一种是同时到达同一格子,另一种是在移动时相遇,如Paris在(1,2),而Helen在(1,2),若下一步Paris到达(1,1),而 ...
- Sicily 1048: Inverso(BFS)
题意是给出一个3*3的黑白网格,每点击其中一格就会使某些格子的颜色发生转变,求达到目标状态网格的操作.可用BFS搜索解答,用vector储存每次的操作 #include<bits/stdc++. ...
- Sicily 1444: Prime Path(BFS)
题意为给出两个四位素数A.B,每次只能对A的某一位数字进行修改,使它成为另一个四位的素数,问最少经过多少操作,能使A变到B.可以直接进行BFS搜索 #include<bits/stdc++.h& ...
- Sicily 1051: 魔板(BFS+排重)
相对1150题来说,这道题的N可能超过10,所以需要进行排重,即相同状态的魔板不要重复压倒队列里,这里我用map储存操作过的状态,也可以用康托编码来储存状态,这样时间缩短为0.03秒.关于康托展开可以 ...
- Sicily 1150: 简单魔板(BFS)
此题可以使用BFS进行解答,使用8位的十进制数来储存魔板的状态,用BFS进行搜索即可 #include <bits/stdc++.h> using namespace std; int o ...
随机推荐
- 扩展Date的format方法--格式化日期时间
Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, "d+& ...
- TWaver HTML5 (2D)--基本概念
基本概念 TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图. 使用TWaver前,需熟悉几个基本概念:图元(Eleme ...
- js判断是不是chrome浏览器
方法一: var isChrome = window.navigator.userAgent.indexOf("Chrome"); <script> var isChr ...
- 笔记11:GDI 制作数字验证码
大二学长让我学下GDI绘制验证码,然后自己就试了试了.找了点视频看了下. 现在会画直线,矩形,字符串,制作验证码 一.绘制一条直线 private void button1_Click(object ...
- HDFS使用0
创建上传文件的:
- css解决方案经验杂记
文本垂直居中 单行文本:line-height的值等于height: 多行文本:padding上下值一致即可: 还可以使用position:absolute进行绝对定位,如果是相对父级元素,则需要设置 ...
- Java中Array的常用方法
0.创建/声明一个数组 1 2 3 String[] aArray = new String[5]; String[] bArray = {"a","b",&q ...
- Css3动画缩放
Css3缩放动画 transform-scale() scale();值 0~1 0-隐藏 1-默认 小于0缩放 大于1放大 例:transform:scale(0.98);
- 【北京站】详解Visual Studio 2013:开发iOS及android应用!现场图集
现场图集: 活动介绍地址:http://huiyi.csdn.net/module/meeting/meeting/info/660/biz
- BZOJ1737 [Usaco2005 jan]Naptime 午睡时间
断环然后裸DP就好了... $f[i][j][k]$表示1号时间段没有被算入答案,到了第$i$个时间段,一共选了$j$个时间段,$k = 0 /1$表示第i个时间段有没有被算进答案的最优值 $g[i] ...