11.12.2018

逆向暴力求解 538.D Weird Chess

New Point:

没有读好题

越界的情况无法判断,所以输出任何一种就可以

所以他给你的样例输出完全是误导

输出还搞错了~

输出的举证中间竟然空格隔开每一个字符,真的是不该错,否则应该是1A吧

然后空间开小了,地图空间倒是注意到了,但是你存取’o’的空间只有1000,而地图大小最大是50*50所以最多是2500个’o’的地址

中间的选择代码逻辑有些混乱

要加强练习!

Describe:

定义新的下棋游戏,给你多个棋子’o’和多个走向’x’,如果走向’x’和’o’重合显示’o’,问你能不能求出一个棋子的走动规则,并用2n-1 * 2n-1的图像表示出来

Solution:

我的思路:扫数据的时候记录好多个棋子的位置,然后遍历输出的数组,记录dx,dy,再对应到输入的图中去判断是否可行,可行就标记’x’不可行就标记’.’,略过中间点’o’,;

对于没有解决方案的情况:没有读好题

·原图中每个’x’必须且只能被访问一次

·原图中源点可以被访问多次不受限制

·图中’.’不能被访问

所以遍历输出数组后判断’x’对应的vis数组访问情况

11.13补充

判断可行

就是先扫一遍只要到达的点不是’.’就可行,越界也没问题

判断不可行

原图中若有’x’没有被轰炸过则方案不可行

认真读题

Code:

 #include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e3;
char mp[maxn][maxn];
char outmp[maxn][maxn];
int vis[maxn][maxn];
struct node{
int x,y;
}sp[maxn*];
int cnt;
void init()
{
memset(vis,,sizeof(vis));
cnt = ;
}
int n;
bool check(int dx,int dy)
{
int flag = ;
//int broke = 0;
for(int i = ;i < cnt;++i)
{
int nowx = sp[i].x;
int nowy = sp[i].y;
int nx = nowx + dx;
int ny = nowy + dy;
if(nx < || nx>= n || ny < || ny >= n)continue;
if(mp[nx][ny] == '.')
{
return false;
}
}
for(int i = ;i < cnt;++i)
{
int nowx = sp[i].x;
int nowy = sp[i].y;
int nx = nowx + dx;
int ny = nowy + dy;
if(nx < || nx>= n || ny < || ny >= n)continue;
if(mp[nx][ny] == 'x')
{
vis[nx][ny]++;
}
}
return true;
}
int main()
{
scanf("%d",&n);
init();
for(int i = ;i < n;i++)
{
scanf("%s",mp[i]);
for(int j = ;j < n;++j)
{
if(mp[i][j] == 'o')
{
sp[cnt].x = i;
sp[cnt++].y = j;
}
}
}
int len = * n - ;
int midx = n - ,midy = n - ;
outmp[midx][midy] = 'o';
for(int i = ;i < len;++i)
{
for(int j = ;j < len;++j)
{
if(i == midx && j == midy)continue;
int dx = i - midx;
int dy = j - midy;
if(check(dx,dy))
outmp[i][j] = 'x';
else
outmp[i][j] = '.';
}
}
int flag = ;
for(int i = ;i < n;++i)
{
for(int j = ;j < n;++j)
{
if(mp[i][j] == 'x' && vis[i][j] == )
{
flag = ;
}
}
}
if(flag)
{
printf("YES\n");
for(int i = ;i < len;++i)
{
printf("%s\n",outmp[i]);
}
}
else
printf("NO\n");
return ;
}
 
 

11.12.2018

逆向暴力求解 538.D Weird Chess

New Point:

没有读好题

越界的情况无法判断,所以输出任何一种就可以

所以他给你的样例输出完全是误导

输出还搞错了~

输出的举证中间竟然空格隔开每一个字符,真的是不该错,否则应该是1A吧

然后空间开小了,地图空间倒是注意到了,但是你存取’o’的空间只有1000,而地图大小最大是50*50所以最多是2500个’o’的地址

中间的选择代码逻辑有些混乱

要加强练习!

Describe:

定义新的下棋游戏,给你多个棋子’o’和多个走向’x’,如果走向’x’和’o’重合显示’o’,问你能不能求出一个棋子的走动规则,并用2n-1 * 2n-1的图像表示出来

Solution:

我的思路:扫数据的时候记录好多个棋子的位置,然后遍历输出的数组,记录dx,dy,再对应到输入的图中去判断是否可行,可行就标记’x’不可行就标记’.’,略过中间点’o’,;

对于没有解决方案的情况:没有读好题

·原图中每个’x’必须且只能被访问一次

·原图中源点可以被访问多次不受限制

·图中’.’不能被访问

所以遍历输出数组后判断’x’对应的vis数组访问情况

11.13补充

判断可行

就是先扫一遍只要到达的点不是’.’就可行,越界也没问题

判断不可行

原图中若有’x’没有被轰炸过则方案不可行

认真读题

Code:

逆向暴力求解 538.D Weird Chess的更多相关文章

  1. Codeforces Round #300 D. Weird Chess 水题

    D. Weird Chess Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/proble ...

  2. POJ 1562(L - 暴力求解、DFS)

    油田问题(L - 暴力求解.DFS) Description The GeoSurvComp geologic survey company is responsible for detecting ...

  3. 隐型马尔科夫模型(HMM)向前算法实例讲解(暴力求解+代码实现)---盒子模型

    先来解释一下HMM的向前算法: 前向后向算法是前向算法和后向算法的统称,这两个算法都可以用来求HMM观测序列的概率.我们先来看看前向算法是如何求解这个问题的. 前向算法本质上属于动态规划的算法,也就是 ...

  4. BestCoder Round #79 (div.2)-jrMz and angles,,暴力求解~

    jrMz and angle       Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/65536 K (Java/Other ...

  5. [codeforces538D]Weird Chess

    [codeforces538D]Weird Chess 试题描述 Igor has been into chess for a long time and now he is sick of the ...

  6. hdu6570Wave (暴力求解)

    Problem Description Avin is studying series. A series is called "wave" if the following co ...

  7. <字符串匹配>KMP算法为何比暴力求解的时间复杂度更低?

    str表示文本串,m表示模式串; str[i+j] 和 m[j] 是正在进行匹配的字符; KMP的时间复杂度是O(m+n)  ,  暴力求解的时间复杂度是O(m*n) KMP利用了B[0:j]和A[i ...

  8. HDU 4462 Scaring the Birds (暴力求解,二进制法)

    题意:给定一个 n*n的矩阵,在一些位置放上稻草人,每个稻草人的范围是一定,问你最少几个能覆盖整个矩阵. 析:稻草人最多才10个,所以考虑暴力,然后利用二进制法,很容易求解,并且时间很少0ms,注意有 ...

  9. ZOJ 2856 Happy Life 暴力求解

    因为是Special Judge 的题目,只要输出正确答案即可,不唯一 暴力力求解, 只要每次改变 happiness 值为负的人的符号即可. 如果计算出当前人的 happiness 值为负,那么将其 ...

随机推荐

  1. [Solution] 885. Spiral Matrix Ⅲ

    Difficulty: Medium Problem On a 2 dimensional grid with R rows and C columns, we start at (r0, c0) f ...

  2. 使用Spring Cache缓存出现的小失误

    前文:今天在使用Spring Boot项目使用Cache中出现的小失误,那先将自己创建项目的过程摆出来 1.首先创建一个Spring Boot的项目(我这里使用的开发工具是Intellij IDEA) ...

  3. 理解javascript中的立即执行函数(function(){})()

    之前看了好多代码,都有用到这种函数的写法,但是都没认真的去想为什么会这样写,今天开始想学习下jquery的源码,发现jquery也是使用这种方式,用(function(window, undefine ...

  4. git log命令常用参数集合

    git log 查看 提交历史 默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面. 常用的格式占位符写法及其代表的意义.选项 说明%H 提交对象(commit)的 ...

  5. 切面编程AOP之KingAOP

    1. 在Nuget上安装KingAOP 2. 创建一个新的类 public class Test : IDynamicMetaObjectProvider { public DynamicMetaOb ...

  6. docker run 与docker start的区别

    docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start). 而docker start的作用是,重新启动 ...

  7. VBA XML信息提取

    Option Explicit Sub 读取XML节点() '后期绑定 'Dim xdoc As Object 'Set xdoc = CreateObject("MSXML2.DOMDoc ...

  8. 在Centos7下搭建Socks5代理服务器

    在Centos7下搭建Socks5代理服务器 http://blog.51cto.com/quliren/2052776   采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器 ...

  9. 现代编译原理——第六章:中间树 IR Tree 含源码

    转自: http://www.cnblogs.com/BlackWalnut/p/4559717.html 这一章,就虎书而言,理论知识点是及其少的,就介绍了为什么要有一个中间表示树.看下面这张图就能 ...

  10. Codeforces 1083C Max Mex

    Description 一棵\(N\)个节点的树, 每个节点上都有 互不相同的 \([0, ~N-1]\) 的数. 定义一条路径上的数的集合为 \(S\), 求一条路径使得 \(Mex(S)\) 最大 ...