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 ...
随机推荐
- Optimizing Downloads for Efficient Network Access
Optimizing Downloads for Efficient Network Access Previous Next 1.This lesson teaches you to Unders ...
- 对char类型数组的英文字母进行冒泡排序
import java.util.Arrays; import java.util.Scanner; public class Demo02 { public static void main(Str ...
- Oracle函数大全下载
Oracle函数大全下载 是一个压缩包,里面是一个chm格式的帮助文档,很实用.
- js基础 -----鼠标事件(按下 拖拽)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- yii在Windows下安装(通过composer方式)
Composer 安装: (Composer 不是一个包管理器,它仅仅是一个依赖管理工具.它涉及 "packages" 和 "libraries",但它在每个项 ...
- java实现的单点登录
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...
- SCCM大致安装过程,参考前辈教程完成部署
本安装sccm主站点服务器准备 参考:http://stephen1991.blog.51cto.com/8959108/1529864 1. 准备三台服务器 ,注:所有服务器需要安装 .net3. ...
- Ubuntu Linux14 64位下在Android studio下用gradle编译Andrid项目时发生libz.so.1共享库找不到的解决方法。
---恢复内容开始--- 我在Ubuntu14 64为下安装了AS,但在用Gradle编译项目时总是报找不到 libz.so.1的错误. error while loading shared libr ...
- HDU_1237_简单计算器
运算符为+,-,*,/:操作数为整数:且没有括号 设定符号优先级,先在栈底压运算符0 #include<iostream> #include<cstdio> #include& ...
- 获取select标签选中的值的三种方式
var obj = document.getElementByIdx_x(”testSelect”); //定位id var index = obj.selectedIndex; // 选中索引 va ...