HDU 4478 Where is King
题目大意:
一个王可以向周围8个方格走,如果都不通留在原地,t秒后,他可能存在的位置数
这题数据量过大,我们需要通过奇偶性判断,如果t = 0可以到达,说明 t=2,4,6.。。。都可以到达
所以我这用dp[N][N][2] 来记录x,y位置上奇数和偶数时间分别到达那点的最短时间,如果不存在,用-1表示
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int N = ;
int dp[N][N][],n,t,x,y,vis[N][N];
char mat[N][N];
int dir[][] = {{,},{-,},{,},{,-},{,-},{,},{-,},{-,-}}; struct Node{
int x,y;
Node(int x,int y):x(x),y(y){}
}; queue<Node> q; void bfs()
{
q.push(Node(x,y));
vis[x][y] = ;
while(!q.empty()){
Node t = q.front();
q.pop();
vis[t.x][t.y]=; for(int i=;i<;i++){
int xx = t.x + dir[i][];
int yy = t.y + dir[i][];
if(xx>=&&xx<=n&&yy>=&&yy<=n&&mat[xx][yy] == '.'){
int flag = ;
if((dp[xx][yy][] < || dp[xx][yy][] > dp[t.x][t.y][] + ) && dp[t.x][t.y][] >= )
{
dp[xx][yy][] = dp[t.x][t.y][] + ;
flag = ;
}
if((dp[xx][yy][] < || dp[xx][yy][] > dp[t.x][t.y][] + ) && dp[t.x][t.y][] >= )
{
dp[xx][yy][] = dp[t.x][t.y][] + ;
flag = ;
} if(flag && !vis[xx][yy])
{
vis[xx][yy]=;
q.push(Node(xx,yy));
}
}
}
}
}
int main()
{
//freopen("test.in","rb",stdin);
//cout << "Hello world!" << endl;
int C;
scanf("%d",&C);
while(C--){
scanf("%d%d%d%d",&n,&t,&x,&y);
for(int i=;i<=n;i++)
scanf("%s",mat[i]+); memset(vis,,sizeof(vis));
memset(dp,-,sizeof(dp));
dp[x][y][]=; bfs(); int tmp = t&;
int ans = ;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(dp[i][j][tmp]!=- && dp[i][j][tmp]<=t)
ans++;
}
}
printf("%d\n",max(ans,));
}
return ;
}
HDU 4478 Where is King的更多相关文章
- hdu 5201 The Monkey King【容斥原理+组合数学】
原来我一开始以为的\( O(n^2) \)是调和级数\( O(nlog_2n) \)的! 首先枚举猴王的桃子个数\( x \),然后使用容斥原理,枚举有至少\( k \)个不满足的条件,那么这\( k ...
- HDU - 1512 Monkey King
Problem Description Once in a forest, there lived N aggressive monkeys. At the beginning, they each ...
- HDU 3861.The King’s Problem 强联通分量+最小路径覆盖
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 4489 The King's Ups and Downs
HDU 4489 The King's Ups and Downs 思路: 状态:dp[i]表示i个数的方案数. 转移方程:dp[n]=∑dp[j-1]/2*dp[n-j]/2*C(n-1,j-1). ...
- HDU 4489 The King’s Ups and Downs dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4489 The King's Ups and Downs Time Limit: 2000/1000 ...
- HDU 5642 King's Order dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 King's Order Accepts: 381 Submissions: 1361 ...
- HDU 5644 King's Pilots 费用流
King's Pilots 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5644 Description The military parade w ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- HDU 5642 King's Order 动态规划
King's Order 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5642 Description After the king's speec ...
随机推荐
- java中什么包不需要导入
java中Math.random()*10;在math包中不需要导入: 即import java.lang.Math; 即lang下的所有包都不需要导入.
- Ubuntu下编译安装MySQL5.7
tar zxvf mysql-5.7.14.tar.gz cd mysql-5.7.14 第一步: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ \ ...
- [转]WF事件驱动
本文转自:http://www.cnblogs.com/Mayvar/archive/2011/09/03/wanghonghua_201109030446.html 已经有不少朋友知道Workflo ...
- JS中的逻辑运算符&&、||,位运算符|,&
1.JS中的||符号: 运算方法: 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值. 只要“||”前面为true,不管“||”后面是true还是fals ...
- (一)Redis for Windows正确打开方式
目录 (一)Redis for Windows正确打开方式 (二)Redis for 阿里云公网连接 (三)Redis for StackExchange.Redis 下载地址 官网.中文网1 及 中 ...
- convertquota - 把老的配额文件转换为新的格式
总览 (SYNOPSIS) convertquota [ -ug ] filesystem 描述 (DESCRIPTION) convertquota 把老的配额文件 quota.user 和 quo ...
- 三个层面学playbook(核心)
三个层面学playbook(核心) ansible-playbook是ansible工具中的核心,对比ad-hoc(ansible)命令,可以把playbook理解为一系列动作的组成,结果传递.判断等 ...
- Ubuntu下systemd服务的配置
1. 在/lib/systemd/system目录下创建服务启动脚本testservice.service 2. 文件内容如下: [Unit] Description=TestService [Ser ...
- 二、spring中装配bean
在spring框架中提供了三种 bean的装配方式,当然这三种装配方式是可以灵活的进行组合使用的,项目中使用最多的是自动装配bean的方式,也就是通过注解的方式进行bean的装配,一下是四种装配方式的 ...
- ORACLE中DBMS_SQL的用法
ORACLE中DBMS_SQL的用法 对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤: open cursor---> parse---> define ...