题目

思路

呵呵,正解并不是什么神奇的方法

而是最原始的最粗暴的最有用的最万能的————搜索

依题模拟即可

\(Code\)

#include<cstdio>
#include<cstring>
using namespace std; const int N = 35;
int n , m , mp[N][N] , vis[N][N] , ans , up;
char s[N]; void dfs(int x , int y , int s , int num)
{
if (s >= ans) return;
if (num == up){ans = s; return;}
vis[x][y] = 1;
int l , r; l = x , r = y;
while (r + 1 <= m && !mp[l][r + 1] && !vis[l][r + 1]) vis[l][++r] = 1;
if (r != y)
{
dfs(l , r , s + 1 , num + r - y);
for(register int i = y + 1; i <= r; i++) vis[x][i] = 0;
} l = x , r = y;
while (r - 1 > 0 && !mp[l][r - 1] && !vis[l][r - 1]) vis[l][--r] = 1;
if (r != y)
{
dfs(l , r , s + 1 , num + y - r);
for(register int i = r; i < y; i++) vis[x][i] = 0;
} l = x , r = y;
while (l + 1 <= n && !mp[l + 1][r] && !vis[l + 1][r]) vis[++l][r] = 1;
if (l != x)
{
dfs(l , r , s + 1 , num + l - x);
for(register int i = x + 1; i <= l; i++) vis[i][y] = 0;
} l = x , r = y;
while (l - 1 > 0 && !mp[l - 1][r] && !vis[l - 1][r]) vis[--l][r] = 1;
if (l != x)
{
dfs(l , r , s + 1 , num + x - l);
for(register int i = l; i < x; i++) vis[i][y] = 0;
}
vis[x][y] = 0;
} int main()
{
freopen("game.in" , "r" , stdin);
freopen("game.out" , "w" , stdout);
scanf("%d%d" , &n , &m);
up = n * m;
for(register int i = 1; i <= n; i++)
{
scanf("%s" , s);
for(register int j = 0; j < m; j++)
if (s[j] == '*') mp[i][j + 1] = 1 , --up;
}
ans = 2147483647;
for(register int i = 1; i <= n; i++)
for(register int j = 1; j <= m; j++)
if (!mp[i][j])
{
memset(vis , 0 , sizeof vis);
dfs(i , j , 0 , 1);
}
printf("%d" , ans == 2147483647 ? -1 : ans);
}

JZOJ 6799. 【2014广州市选day2】game的更多相关文章

  1. jzoj 6797. 【2014广州市选day2】hanoi

    Description 你对经典的hanoi塔问题一定已经很熟悉了.有三根柱子,n个大小不一的圆盘,要求大盘不能压在小盘上,初始时n个圆盘都在第一根柱子上,最少要多少步才能挪到最后一根柱子上? 现在我 ...

  2. jzoj 6798. 【2014广州市选day2】regions

    Description 在平面上堆叠着若干矩形,这些矩形的四边与平面X坐标轴或Y坐标轴平行.下图展示了其中一种情况,3个矩形的边将平面划分成8个区域: 下面展示了另一种稍稍复杂一些的情况: 你的任务是 ...

  3. 【2014广州市选day1】JZOJ2020年9月12日提高B组T4 字符串距离

    [2014广州市选day1]JZOJ2020年9月12日提高B组T4 字符串距离 题目 Description 给出两个由小写字母组成的字符串 X 和Y ,我们需要算出两个字符串的距离,定义如下: 1 ...

  4. 【2014广州市选day1】JZOJ2020年9月12日提高B组T3 消除游戏

    [2014广州市选day1]JZOJ2020年9月12日提高B组T3 消除游戏 题目 Description 相信大家玩过很多网络上的消除类型的游戏,一般来说就是在一个大拼图内找出相同的部分进行最大程 ...

  5. 【2014广州市选day1】JZOJ2020年9月12日提高B组T2 导弹拦截

    [2014广州市选day1]JZOJ2020年9月12日提高B组T2 导弹拦截 题目 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统 V1.0.但是这种导弹拦截系统有一个缺 ...

  6. 【JZOJ3601】【广州市选2014】Tree(tree)

    ╰( ̄▽ ̄)╭ 每个非叶子节点,其左右子树叶子节点的权值之和相等.我们称这种二叉树叫平衡二叉树. 我们将一棵平衡二叉树叶子节点的权值从左到右列出来,假如这个权值序列是另一个序列A的子序列,我们称这棵平 ...

  7. SCOI 2014 省选总结

    总的来说作为高一党,去做省选难度的题完全就是去玩的,还是找惯例起身跪hja. 跪毕,看看自己惨不忍睹的成绩,我只想说:电子坑大为什么day1的暴力只有10分!为什么呢?我笑看题面: 方伯伯种玉米,方伯 ...

  8. NOIP 2014 提高组 Day2

    期望得分:100+60+30=190 实际得分:70+60+30=160 https://www.luogu.org/problem/lists?name=&orderitem=pid& ...

  9. JZOJ 1003【东莞市选2007】拦截导弹——dp

    题目:https://jzoj.net/senior/#main/show/1003 只要倒推一下第一次上升的最长和第一次下降的最长就行了.不用n^2logn,枚举了 j 还要用树状数组找值比自己大的 ...

  10. 2014 网选 上海赛区 hdu 5047 Sawtooth

    题意:求n个'M'型的折线将一个平面分成的最多的面数! 思路:我们都知道n条直线将一个平面分成的最多平面数是 An = An-1 + n+1 也就是f(n) = (n*n + n +2)/2 对于一个 ...

随机推荐

  1. 修改msi文件

    前言 msi文件是一个安装包文件,可以看做一个数据库,其中包含很多资源,例如图片,配置文件,可执行文件exe等等. 我想要把修改过 exe可执行文件提交到msi文件中,那么就需要知道msi文件的构成, ...

  2. python-py文件打包成exe可执行文件

    方法一::打包完成后可以直接被他人使用,他人不用安装python环境的 可以使用pyinstaller模块实现将python项目打包成exe执行文件 """ 先安装模块 ...

  3. Django基础笔记10(前端展示)

    Ajax使用 $.ajax({ url:xxx, type:xxx, dadaType:xxx, data:{...} }) $.post(url,data,callbackFunction,data ...

  4. java面试题-常用框架

    Spring Spring 是什么 一个开发框架,一个容器,主要由面向切面AOP 和依赖注入DI两个方面,外加一些工具 AOP和IOC AOP 面向切面 AOP是一种编程思想,主要是逻辑分离, 使业务 ...

  5. Python编程规范之PEP8

    Python编程规范-PEP8 PEP是 Python Enhancement Proposal 的缩写. 英文链接: https://legacy.python.org/dev/peps/pep-0 ...

  6. jupyter 数据显示设置

    #设置显示行数pd.set_option('display.max_row',None)#设置显示列数pd.set_option('display.max_column',None)#设置显示宽度pd ...

  7. vba 正则表达式用法

    Sub Regexp_test(Sht As String, str As String)On Error Resume NextDim regx As ObjectDim arr, brr, mhS ...

  8. Java开发如何通过IoT边缘ModuleSDK进行协议转换?

    摘要:使用ModuleSDK开发插件应用,接入其他协议设备(如HTTP请求数据),将其他协议的数据转化为MQTT协议JSON数据上报到IoTDA. 本文分享自华为云社区<[华为云IoTEdge开 ...

  9. 微软出品自动化神器【Playwright+Java】系列(七) 之 元素的可操作性验证

    前言 昨天在某平台发表了一篇这系列的文章,结果不但提示说有违禁词(java也算?),然后文章审核通过后,文章还找不到,不到去哪了,表示很郁闷,去反应未果,确实有点尴尬了. 元素的可操作性验证 关于AP ...

  10. TS学习笔记

    类型 类型 例子 描述 number 1,2,-2 任意数字 string 'hi',"hi" 任意字符串 boolean true,false 布尔值或者true false 字 ...