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 ...
随机推荐
- Webdriver - Selenium Grid Configuration
Grid parameter: role = <hub|node> (default is no grid, just run an RC/webdriver server). When ...
- 在centos6.5中安装reids
一.简介 Redis是一个key-value存储系统,是一个内存数据库,Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作 ...
- 能源项目xml文件 -- springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- html5日期转long
正确:日期,时间均是实时的 var inDate = $("#inDate").val().trim(); if(inDate != "") { inDate ...
- ing
#include <stdio.h> int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF & ...
- Uva---10881 Piotr's Ants(蚂蚁)
Problem DPiotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them ...
- VI编辑器学习笔记
VIM的使用 VI是Linux系统中的一种编辑器,它的使用方法和界面与Unix平台十分相似,掌握了VIM的特殊,你可以感觉到它强大的功能与高效.Vim 相对来说较小,无论你使用任何Linux系统,你总 ...
- Mybatis update In
mysql语句如下: ,,) mybatis的mapper如下: int updateStateByIDs(@Param("ids") String[] ids, @Param(& ...
- poj1129 Channel Allocation(染色问题)
题目链接:poj1129 Channel Allocation 题意:要求相邻中继器必须使用不同的频道,求需要使用的频道的最少数目. 题解:就是求图的色数,这里采用求图的色数的近似有效算法——顺序着色 ...
- 创建PO
FORM FRM_CREATE_PO USING P_POSNR CHANGING P_EBELN. DATA: LV_VENDOR TYPE LIFNR, LV_ITEM TYPE EBELP, L ...