【HDOJ】3345 War Chess
简单BFS。注意最后一组数据,每个初始点不考虑周围是否有敌人。
/* 3345 */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
using namespace std; #define MAXN 105
#define INF 0xfffff typedef struct node_t {
int x, y, e;
node_t() {}
node_t(int xx, int yy, int ee) {
x = xx; y = yy; e = ee;
}
} node_t; char map[MAXN][MAXN];
bool stop[MAXN][MAXN];
int hp[MAXN][MAXN];
int hurt[MAXN][MAXN];
int n, m, mv;
int bx, by;
int dir[][] = {
-,,,-,,,,
}; void init() {
int i, j, k; memset(stop, false, sizeof(stop));
memset(hurt, -, sizeof(hurt));
for (i=; i<=n; ++i) {
for (j=; j<=m; ++j) {
if (map[i][j] == 'E') {
stop[i-][j] = stop[i][j-] = stop[i+][j] = stop[i][j+] = true;
hurt[i][j] = INF;
} else if (map[i][j] == 'Y') {
bx = i;
by = j;
} else if (map[i][j] == '.') {
hurt[i][j] = ;
} else if (map[i][j] == 'T') {
hurt[i][j] = ;
} else if (map[i][j] == 'R') {
hurt[i][j] = ;
} else if (map[i][j] == 'P') {
hurt[i][j] = ;
} else if (map[i][j] == '#') {
hurt[i][j] = INF;
}
}
}
} bool check(int x, int y) {
return x<= || x>n || y<= || y>m;
} void bfs() {
int x, y, e;
int i, j, k;
queue<node_t> Q;
node_t nd; memset(hp, -, sizeof(hp));
//if (stop[bx][by] == false)
Q.push(node_t(bx,by,mv));
hp[bx][by] = mv; while (!Q.empty()) {
nd = Q.front();
Q.pop(); for (i=; i<; ++i) {
x = nd.x + dir[i][];
y = nd.y + dir[i][];
if (check(x, y))
continue;
e = nd.e - hurt[x][y];
if (e > hp[x][y]) {
hp[x][y] = e;
if (stop[x][y] == false)
Q.push(node_t(x, y, e));
}
}
}
} void merge() {
int i, j, k; for (i=; i<=n; ++i) {
for (j=; j<=m; ++j) {
if (hp[i][j]>= && map[i][j]!='P') {
map[i][j] = '*';
}
}
}
map[bx][by] = 'Y';
} int main() {
int t;
int i, j, k; #ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif scanf("%d", &t);
while (t--) {
scanf("%d %d %d", &n, &m, &mv);
for (i=; i<=n; ++i)
scanf("%s", map[i]+);
init();
bfs();
merge();
for (i=; i<=n; ++i)
printf("%s\n", map[i]+);
printf("\n");
} return ;
}
【HDOJ】3345 War Chess的更多相关文章
- 【贪心】【Uva11729】 Commando War
你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任 ...
- hdu 3345 War Chess
War Chess Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- HDU - 3345 War Chess 广搜+优先队列
War chess is hh's favorite game: In this game, there is an N * M battle map, and every player has hi ...
- 【HDOJ】【4405】Aeroplane chess飞行棋
概率DP/数学期望 kuangbin总结中的第4题 啊还是求期望嘛……(话说Aeroplane chess这个翻译怎么有种chinglish的赶脚……) 好像有点感觉了…… 首先不考虑直飞的情况: f ...
- 【HDOJ】2809 God of War
状态DP. /* 2809 */ #include <iostream> #include <queue> #include <cstdio> #include & ...
- 【HDOJ】4729 An Easy Problem for Elfness
其实是求树上的路径间的数据第K大的题目.果断主席树 + LCA.初始流量是这条路径上的最小值.若a<=b,显然直接为s->t建立pipe可以使流量最优:否则,对[0, 10**4]二分得到 ...
- 【HDOJ】【2829】Lawrence
DP/四边形不等式 做过POJ 1739 邮局那道题后就很容易写出动规方程: dp[i][j]=min{dp[i-1][k]+w[k+1][j]}(表示前 j 个点分成 i 块的最小代价) $w(l, ...
- 【HDOJ】【3506】Monkey Party
DP/四边形不等式 裸题环形石子合并…… 拆环为链即可 //HDOJ 3506 #include<cmath> #include<vector> #include<cst ...
- 【HDOJ】【3516】Tree Construction
DP/四边形不等式 这题跟石子合并有点像…… dp[i][j]为将第 i 个点开始的 j 个点合并的最小代价. 易知有 dp[i][j]=min{dp[i][j] , dp[i][k-i+1]+dp[ ...
随机推荐
- [Android 中级]Voip之CSipSimple类库的编绎
CSipSimple是什么?是一款基于pjsip的Android客户端,相信想要研究VOIP通讯的朋友一定不会陌生,这里我就把如何编译CSipSimple写下来. 首先从CSipSimple官方网站上 ...
- curl post参数,接口接收不到数据问题
今天遇到一个问题,注册下发短信失败,总提示无法发送注册短信,请从新发送. 经检查,curl里面将post数据以json_encode的方法转码之后传递,而且各选项设置感觉没有问题,怎么接口就接收不到p ...
- 利用switch语句进行多选一判断。
<!doctype html> <meta http-equiv="content-type" content="text/html" cha ...
- node里如何查看浏览器信息
'use strict'; let http = require(`http`); http.createServer((req, res) => { console.log(req.heade ...
- OpenGL ES 3.0 点,线,三角形绘制形式总结
OpenGL ES 3.0 顶点 -1, 1, 0, -0.5f, 0, 0, 0, -1, 0, -1, 0, 0, 0.5f, 0, 0, 1, -1, ...
- Java开发工程师必会做试题
一.单选题 (共19道题,每题5分) 1.下面有关java的一些细节问题,描述错误的是? A.构造方法不需要同步化 B.一个子类不可以覆盖掉父类的同步方法 C.定义在接口中的方法默认是publ ...
- CTE-递归[2]
在此之前写过一个CTE的递归,取出了所有的子节点,基本上可以满足大多数的需求,这里我们来延伸一下:首先我们回顾下原来的场景 图片的上半部分递归查出某个节点的所有子节点,这个我们已经通过CTE实现了,可 ...
- for循环,如何结束多层for循环
采用标签方式跳出,指定跳出位置, a:for(int i=0;i<n;i++) { b:for(int j=0;j<n;j++) { if(n=0) { break a; } } }
- asp.net 批量下载实现(打包压缩下载)
1.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default ...
- MySQL 5.6 for Windows 解压缩版配置安装(转)
转自:http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给 ...