题目链接:http://acm.zzuli.edu.cn/problem.php?id=2628

题目描述
       放假了,小新决定出去散散心,于是他来到了著名的字母广场。这个广场是由n*m块砖块铺成的,每个砖块上都有一个小写字母,所以叫字母广场。广场里好玩的东西太多了,小新刚喝完奶茶,就准备去广场的另一边去吃小吃。小新在走时,低头看了一眼广场地面上的字母,突然想到了一个问题。自己在移动过程中,会路过一些砖块,将这些砖块上的字母依次拼接在一起,可以得到一个字符串。
      小新移动的规则如下:
      小新可以在广场范围内移动,不能走出广场,小新的下一步可以选择向上、下、左、右中的任一方向移动一步。
      小新已经走过的砖块不能再次到达。
      小新落脚的位置一定是在砖块的中心,也就是说小新的一步不会踩到两块及以上的砖块。初始小新可以任意选择广场内的一块砖块作为出发点,在进行k(k>=0)步移动后,可以选择结束。
      小新在选择结束后,他走过的路径会形成一个字符串,小新想知道,他得到的字符串能否比目标字符串s小呢?
输入
输入第一行一个整数T(1<=T<=10),代表样例组数;
每组样例第一行两个整数n,m(1<=n,m<=1000),代表广场的大小。
接下来n行,每行m个小写字母,代表广场地面对应位置砖块上的字母。
所有样例n*m的和<=2e7.
接下来一行只包含小写字母的字符串s(1<=|s|<=100000)。

输出
对于每组样例,输出一行。如果小新可以走出一条比目标串s字典序更小的字符串,则输出“Yes”,否则输出“No”(不加引号)。
样例输入 Copy
2
3 3
abc
def
ghi
jklmnopqrstuvwxyz 2 3
uvw
xyz
abc
样例输出 Copy
Yes
No
提示
以下是百度百科对字典序的定义:

设想一本英语字典里的单词,何者在前何者在后?
显然的做法是先按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。
这题我们选一个最小的字符作为字符串就好了,如果给出的字符串长度大于1,那么这个字符按字典序小于等于这个字符串的首字符就能比这个字符串小,如果给出的字符串长度只有1,那么只有这个字符按字典
序小于字符串的时候才能比这个字符串小
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<cmath>
#include<cstdio>
#include<cctype>
#include<string>
#include<vector>
#include<climits>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
#define mst(a) memset(a, 0, sizeof(a))
#define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const double eps = 1e-;
const int INF = 0x3f3f3f3f;
const ll ll_INF = 0x3f3f3f3f3f3f3f;
const int maxn = 1e3+;
char _map[maxn][maxn], s[maxn*];
bool solve(int n, int m) {
int len = strlen(s);
for (int i = ; i<n; ++i)
for (int j = ; j<m; ++j)
if (_map[i][j] < s[] || (_map[i][j] == s[] && len > ))
return true;
return false;
}
int main(void) {
int t;
scanf("%d", &t);
while(t--) {
int n, m;
scanf("%d%d", &n, &m);
for (int i = ; i<n; ++i)
scanf("%s", _map[i]);
scanf("%s", s);
printf(solve(n,m) ? "Yes\n" : "No\n");
}
return ;
}

zzulioj - 2628: 小新的字母广场的更多相关文章

  1. zzulioj - 2619: 小新的信息统计

    题目链接:http://acm.zzuli.edu.cn/problem.php?id=2619 题目描述        马上就要新生赛了,QQ群里正在统计所有人的信息,每个人需要从群里下载文件,然后 ...

  2. 设置Fn键 笔记本直接按F1-F12 无须按Fn键 Fn+F12改F12(联想小新300为例)

    最近公司给配的笔记本联想小新300 80RT  i7-6500U 4G内存 500G机械,后加装120G固态+4G内存 这样就感觉还不错了. 在使用这本子的时候,去了Win10,强行装了Win7.无线 ...

  3. 【转】G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导

    http://support1.lenovo.com.cn/lenovo/wsi/htmls/detail_20140505150749705.html 适用范围:G40-70,G50-70联想小新笔 ...

  4. 联想小新Air 15 安装黑苹果macOS High Sierra 10.13.6过程

    联想小新Air 15 安装黑苹果全过程 本文参考:https://blog.csdn.net/qq_28735663/article/details/80634300 本人是联想小新AIr 15 , ...

  5. 微信小程序通讯录字母排序

    微信小程序通讯录 字母排序效果: demo地址:https://github.com/PeachCoder/wechat-contacts

  6. Linux[Manjaro] 小新15笔记本AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题

    Linux[Manjaro] 小新15AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题解决办法 年初尝试将manjaro安装在我的笔记本上就存在这个问题,也一度将我劝退.系统安装在 ...

  7. XiaoXin 13Pro-Hackintosh 小新13pro崇尚极简的黑苹果双系统

    Lenovo XiaoXin-13-Pro-Hackintosh 关键词:Hackintosh XiaoXin EFI Tutorial Lenovo 以下提及的EFI及其他部分文件见github仓库 ...

  8. 折腾黑苹果-小新Pro13

    最近在闲鱼上购入了一台2020版的联想小新 Pro13,i5 10200u 16g 512g配置,Ax201网卡.这台机子原生硬件就可以完美黑苹果了,不需要更换配件.只是Ax201网卡不能随航和隔空投 ...

  9. ZZULIoj 1912 小火山的爱情密码

    Description 小火山获得了一个字符串,然而大火山让小火山从里面截取一段字符串,并且让小火山截取的字符串满足一些字符达到一定数量. 小火山觉得很容易,但是他想要知道他至少得截取多长的字符串. ...

随机推荐

  1. C语言基础知识---认识C语言

    2019.11.09 秋风 晴 最近一直在搞一套LoRa算法.总算有点效果了.心感慰藉(可能用错词语.但是也不管了) 初学者如何理解C语言? 无需刻板理解,笔者常用一个这样的例子助学生理解:法国人和法 ...

  2. expect——通过编写自动化脚本实现信息交互(整理)

    本文简要介绍了expect工具语言的功能.用法,并以实例来具体说明 expect是什么 Expect是一个免费的编程工具语言,用来完成通信过程中的交互式任务,而无需人的干预. 通过shell虽然可以实 ...

  3. 学java必须知道的那些queue

    队列是我们学java必须接触到的知识,很多内容都和它相关,但是你真的了解它们的概念和使用方法吗?在本文,你可以获取关于queue的一切信息,希望我能够帮助你在java的学习道路上乘风破浪. 概念 队列 ...

  4. python_dict json读写文件

    命令汇总: json.dumps(obj) 将python数据转化为json Indent实现缩进,ensure_ascii 是否用ascii解析 json.loads(s) 将json数据转换为py ...

  5. [BZOJ2157]旅游(树链剖分/LCT)

    树剖裸题,当然LCT也可以. 树剖: #include<cstdio> #include<algorithm> #define ls (x<<1) #define ...

  6. java基础 String

    标准格式:数据类型[] 数组名称 = new 数据类型[] {元素1,元素2,...};省略格式:数据类型[] 数组名称 = {元素1,元素2,...}; Scanner类实现的功能,可以实现键盘输入 ...

  7. Java之路---Day02

    2019-10-17-20:21:22 顺序结构: 概述:顺序执行,根据编写的顺序,从上到下执行语句 判断语句1-if: if语句第一种格式: if(关系表达式){ 语句体; } 执行流程: 1.首先 ...

  8. 07、MySQL—时间日期类型

    时间日期类型 1.Date 日期类型:系统使用三个字节来存储数据,对应的格式为:YYYY-mm-dd,能表示的范围是从1000-01-01 到9999-12-12,初始值为0000-00-00 2.T ...

  9. Java多线程并发同步执行

    https://www.cnblogs.com/pengdai/p/12026959.html 并发关键字:volatile,final,synchronized Collections: 并发集合 ...

  10. Linux负载模拟

    转载:https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79063392 CPU 下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送 ...