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

题目

Description

相信大家玩过很多网络上的消除类型的游戏,一般来说就是在一个大拼图内找出相同的部分进行最大程度的消除操作。下面我们给出一个拼图以及消除规则,请你找到最大限度的消除方案。

【拼图组成】

拼图为 N行 * M列 的矩阵,每个格子中都放着一个数字,范围是0到9。例如:

4*5 矩阵:



【消除规则】

我们可以从拼图的任意一个格子(坐标【X,Y】)出发,消除该格子的数字,然后,向格子X坐标正负1,Y坐标正负1的范围,寻找和原来格子相同的数字(不能找已经消除过的格子),一并消除,然后在新的格子继续重复上述过程,直到找不到相同的数字为止。这个过程称为消除过程。上面的矩阵中,我们可用以下几种消除方案:

Input

输入第一行为两个整数N (1<=N<=30),M(1<=<=30),用空格隔开下面N行,每行有M个整数(范围0到9)

Output

输出一行为两个整数 X,Y,中间用一个空格隔开,其中X代表消除的数字,Y代表最大的消除数目。

如果一个拼图中有多个数字可以消除相同的最大的数目,那么则输出数字最小的那个解。

Sample Input

4 5

12345

22340

09070

12300

Sample Output

0 5

题目

题意

给出一个由0~9组成的\(n*m\)的矩阵

问最长相同数字链

分析

\(BFS\)不适合,采用\(DFS\)

枚举起点

然后一条路走

走到最后没得走了统计答案

Code

#include<bits/stdc++.h>
using namespace std;
int n,m,ans,ans1,s,a[35][35],d[1005][3],f1[9]={0,-1,-1,-1,0,0,1,1,1},f2[9]={0,-1,0,1,-1,1,-1,0,1};
bool b[35][35];
char str[35];
int read()
{
int res=0;char ch=getchar();
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+(ch-'0'),ch=getchar();
return res;
}
void dfs(int x,int y,int s)
{
int t=0,xx,yy;
for (int i=1;i<=8;++i)
{
xx=x+f1[i];
yy=y+f2[i];
if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&!b[xx][yy]&&a[xx][yy]==a[x][y])
{
b[xx][yy]=true;
dfs(xx,yy,s+1);
b[xx][yy]=false;
++t;
} }
if (t==0)
{
if (s>ans||(s==ans&&a[x][y]<ans1))
{
ans=s;
ans1=a[x][y];
}
}
}
int main()
{
freopen("clear.in","r",stdin);
freopen("clear.out","w",stdout);
n=read();m=read();
for (int i=1;i<=n;++i)
{
scanf("%s",str+1);
for (int j=1;j<=m;++j)
a[i][j]=str[j]-'0';
}
ans1=10;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if (!b[i][j])
b[i][j]=true,dfs(i,j,1),b[i][j]=false;
printf("%d %d\n",ans1,ans);
fclose(stdin);fclose(stdout);
return 0;
}

【2014广州市选day1】JZOJ2020年9月12日提高B组T3 消除游戏的更多相关文章

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

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

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

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

  3. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T3 头晕的奶牛

    [Usaco 2009 Gold]JZOJ2020年9月19日提高B组T3 头晕的奶牛 题目 Description 奶牛们发现,在农场里面赛跑是很有趣的一件事.可是她们一旦在农场里面不断地转圈,就会 ...

  4. 【Usaco 2009 Gold 】JZOJ2020年9月19日提高B组T2 电视游戏问题

    [Usaco 2009 Gold ]JZOJ2020年9月19日提高B组T2 电视游戏问题 题目 Description 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可 ...

  5. JZOJ2020年9月12日提高B组反思

    CSP第1轮倒计时:29天 JZOJ2020年9月12日提高B组反思 T1 放在T1却是最难的一题 明显需要高精度 但是我小学奥数没学好,不知道怎么把正有理数转化成分数 T2 明显的DP 可惜的是我文 ...

  6. 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你

    [五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...

  7. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T4 过路费

    [Usaco 2009 Gold]JZOJ2020年9月19日提高B组T4 过路费 题目 Description 跟所有人一样,农夫约翰以着宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之 ...

  8. 【Usaco 2009 Silver】JZOJ2020年9月19日提高B组T1 音乐节拍

    [Usaco 2009 Silver]JZOJ2020年9月19日提高B组T1 音乐节拍 题目 Description FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000) ...

  9. JZOJ2020年9月19日提高B组反思

    CSP第一轮倒计时:22天 JZOJ2020年9月19日提高B组反思 今天比的不好,只有签到题过了 130,rank 20 T1 签到题 用二分直接切 AC 100 T2 觉得是依赖背包问题 但是我没 ...

随机推荐

  1. 2020 年TI 杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置)

    2020年TI杯大学生电子设计竞赛E题总结(放大器非线性失真研究装置) 摘要:E题的竞赛内容主要是参赛者自己搭建一个晶体管放大器,能够产生不失真.顶部失真.底部失真.双向失真和交越失真五种波形,并分别 ...

  2. 「SHOI2014」三叉神经树

    「SHOI2014」三叉神经树 给你一颗由\(n\)个非叶子结点和\(2n+1\)个叶子结点构成的完全三叉树,每个叶子结点有一个输出:\(0\)或\(1\),每个非叶子结点的输出为自己的叶子结点中较多 ...

  3. 云计算之路-出海记-小目标:Hello World from .NET 5.0 on AWS

    品尝过船上的免费晚餐,眺望着 aws 上搭建博客园海外站的宏伟目标,琢磨着眼前可以实现的小目标,不由自主地在屏幕上敲出了 -- "Hello World!",就从这个最简单朴实的小 ...

  4. Angular2 初学小记

    1.与Angular1的异同 几乎完全不同(什么鬼~ 1)保留一些特性 表达式仍旧用{{}}. 2)属性指令变为驼峰式 ng-if ---> ngIf 3)ng-repeat被ngFor代替 4 ...

  5. 云计算之路-出海记:命令行下的 AWS

    俗话说"三百六十行,行行出状元",自从有了电脑之后,三百六十行又多了一行 -- 命令行.GUI 的诞生开创了繁荣的 PC "窗口"(windows)时代,互联网 ...

  6. 管理机--Jumpserver由docker搭建

    一.环境准备 使用Centos7.0及以上版本,(网要好哦) 二.安装docker 1,下载,安装,启动 docker yum -y install docker         #安装docker ...

  7. 【笔记】拉勾Java工程师高薪训练营-第一阶段 开源框架源码解析-模块一 持久层框架涉及实现及MyBatis源码分析-任务一:自定义持久层框架

    以下笔记是我看完视频之后总结整理的,部分较为基础的知识点也做了补充,如有问题欢迎沟通. 目录 任务一:自定义持久层框架 1.1 JDBC回顾及问题分析 1.2 自定义持久层框架思路分析 1.3 IPe ...

  8. TRUNCATE 有约束的表

    在有外键约束的情况下,truncate 表时,会报错, 我们可以设置外键检测为flase,执行完truncate命令后,再启用 SET foreign_key_checks = 0;TRUNCATE ...

  9. JS如何判断表单中用户选择哪个哪个选项?

    JS如何判断表单中用户选择哪个哪个选项? HTML代码: <form name="form1" onsubmit="return foo();"> ...

  10. tcp syn-synack-ack 服务端发送syn-ack

    tcp_v4_send_synack()用于发送SYNACK段,在tcp_v4_conn_request()中被调用. 首先调用tcp_make_synack()构造SYNACK段,主要是构造TCP报 ...