逆向暴力求解 538.D Weird Chess
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的更多相关文章
- Codeforces Round #300 D. Weird Chess 水题
D. Weird Chess Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/538/proble ...
- POJ 1562(L - 暴力求解、DFS)
油田问题(L - 暴力求解.DFS) Description The GeoSurvComp geologic survey company is responsible for detecting ...
- 隐型马尔科夫模型(HMM)向前算法实例讲解(暴力求解+代码实现)---盒子模型
先来解释一下HMM的向前算法: 前向后向算法是前向算法和后向算法的统称,这两个算法都可以用来求HMM观测序列的概率.我们先来看看前向算法是如何求解这个问题的. 前向算法本质上属于动态规划的算法,也就是 ...
- 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 ...
- [codeforces538D]Weird Chess
[codeforces538D]Weird Chess 试题描述 Igor has been into chess for a long time and now he is sick of the ...
- hdu6570Wave (暴力求解)
Problem Description Avin is studying series. A series is called "wave" if the following co ...
- <字符串匹配>KMP算法为何比暴力求解的时间复杂度更低?
str表示文本串,m表示模式串; str[i+j] 和 m[j] 是正在进行匹配的字符; KMP的时间复杂度是O(m+n) , 暴力求解的时间复杂度是O(m*n) KMP利用了B[0:j]和A[i ...
- HDU 4462 Scaring the Birds (暴力求解,二进制法)
题意:给定一个 n*n的矩阵,在一些位置放上稻草人,每个稻草人的范围是一定,问你最少几个能覆盖整个矩阵. 析:稻草人最多才10个,所以考虑暴力,然后利用二进制法,很容易求解,并且时间很少0ms,注意有 ...
- ZOJ 2856 Happy Life 暴力求解
因为是Special Judge 的题目,只要输出正确答案即可,不唯一 暴力力求解, 只要每次改变 happiness 值为负的人的符号即可. 如果计算出当前人的 happiness 值为负,那么将其 ...
随机推荐
- 在Html页面中调用ajax代码
以最原始的XMLHttpRequest形式,实现ajax. 封装的方法 1 /** 2 * 发送一个 AJAX 请求 3 * @param {String} method 请求方法 4 * @para ...
- windows内核驱动内存管理之Lookaside使用
Windows内存管理中使用了类似于容器的东西,叫做Lookaside对象,每次程序员申请内存都会从Lookaside里面申请,只有不足的时候,Lookaside才会向内存又一次申请内存空间,这样减少 ...
- Linux-01
Linux各目录的作用 /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行.不过放在/bin下的命令在单用户模式下也可以执行 /sbin/ 保存和系统环境设置相关的命令,只有超级用户可以使用 ...
- linux命令——wc
wc 统计文件里面有多少单词,多少行,多少字符. wc语法 [root@www ~]# wc [-lwm] 选项与参数: -l :仅列出行: -w :仅列出多少字(英文单字): -m :多少字符: 默 ...
- ExpandableListView解析JSON数据
效果图: 说明:刚开始使用这个控件我花费了3天的时间,但是一直都没有达到预期的效果,要么就是直接全部不显示,要么就是数据累加 ...
- 大数据学习笔记4 - Hadoop的优化与发展(Hadoop 2.0)
前面介绍了Hadoop核心组件HDFS和MapReduce,Hadoop发展之初在架构设计和应用性能方面仍然存在不足,Hadoop的优化与发展一方面体现在两个核心组件的架构设计改进,一方面体现在Had ...
- To the Max 二维dp(一维的变形)
Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...
- ARM汇编指令格式
一.ARM介绍 1) arm汇编中,程序下一步执行哪一条指令,是根据程序计数器(PC)的值来决定. 类比于8086的CS:IP的功能. 2) 8086属于CISC(复杂指令集),每条指令长度不等,ar ...
- 【漫画】程序员永远修不好的Bug——情人节
盼望着,盼望着,周五来了 情人节的脚步近了 一切都像热恋时的样子 飘飘然放开了买 购物车满起来了…… 不要指望着能在女生面前蒙混过关 是时候展现真正的技术了 这道坎过去了是情人节 过不去就是清明节了 ...
- mysql备份最近8天的数据库,老的自动删除方案
服务器上的处理脚本记录: [root@mysql01 test]# crontab -l0 2 * * * /bin/sh /script/sqlbackup.sh >/dev/null 2&g ...