题目链接: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. DISPLAY FORMAT 語法

  2. 《三》大话 Typescript 接口

    > 前言: 本文章为 TypeScript 系列文章. 旨在利用碎片时间快速入门 Typescript. 或重新温故 Typescript 查漏补缺.在官方 api 的基础上, 加上一些日常使用 ...

  3. 用C#做一个 拉流播放器

    做拉流播放器第一个想到就是,.,..FFmpeg没错 我也是用强大的他它来做的.但是我用的不是  cmd 调用 而是用的强大的FFmpeg.AutoGen FFmpeg.AutoGen 这个是C# 一 ...

  4. dump net core windbg 安装

    安装 1.下载工具windbg 地址:https://www.microsoft.com/zh-cn/p/windbg-preview/9pgjgd53tn86?SilentAuth=1&rt ...

  5. JDBC简单增删改查实现(单表)

    0.准备工作 开发工具: MySQL数据库, intelliJ IDEA2017. 准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可) 1. 数据库数据 ...

  6. python pip安装解决方法

    一招解决python pip install 安装库失败   PIP是python强大的安装利器,但是我们经常遇到安装库失败的问题,以下本人觉得最有效的解决方法: 1.打开 https://www.l ...

  7. 【转】Dubbo分布式服务框架

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的远程服务调用方案. Dubbo架构 官网架构图: 节点角色说明: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务 ...

  8. vue侦听器 基础4

    侦听器 使用方式:设置需要侦听的data里的属性名就可以了 new Vue({ el:"#app", data:{ count:0 }, watchers:{ count(){ / ...

  9. js数组【续】(相关方法)

    一.数组的栈,队列方法[调用这些方法原数组会发生改变]var arr = [2,3,4,5,6];1.栈 LIFO (Last-In-First-Out)a.push() 可接受任意类型的参数,将它们 ...

  10. vue辅助函数mapStates与mapGetters

    状态管理器 <!-- store.js: --> import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export de ...