一、题目

  

二、题意

  给定一个字母表(最多也就是英文小写字母的前10个字母),一个交换表,两个字符串,判断字符串A能否通过交换表的交换方式变成字符串B。

三、思路

  1、一开始,比赛时,我半模拟半记忆化地做,越做越糊涂,越做越复杂,最后直到比赛结束也没有做出来。T_T实力还是有很大地提升空间啊。

  2、比赛后,问了过了的队伍,秒懂,此法实在是妙啊。因为交换表中最多也只有45种交换,那么,可以枚举交换表中没有的交换关系,假设为两个字符为ab,那么,保留串A和串B中的所有a和b(即去掉非a且非b的元素),判断剩余的两个串是否相等,不想等则可以输出NO。因为如果你要把串A变成串B,就必须对串A的剩余串做元素位置交换,而交换表中不存在这种交换,所以,串A是无法变成串B的。最后,如果前面一直没有输出NO,则输出YES。就是这么简单。。。。。。诶,最近脑子比较进水啊。坚持下去,你就是最棒的!

四、注意事项

  1、题目中没说两个串一定相等,虽然可能所有测试样例都是长度相等的,但为了保险起见,还是判断一下好。

  2、题目中没说两个串含有的字符数量是相等的,即可能存在这样的样例:串A:abbbba,串B:bbbbba。这种情况也要判断一下。

  3、交换表中的交换关系是可以的对换的。即如果存在交换ab,那么,ba也是存在的。

  4、输入输出是要重定向到文件的。别被坑了。

五、源代码

  

#include<bits/stdc++.h>
using namespace std;
int n, m;
][];
][];
][];
];
];
bool test(char a, char b) {
    ; i < ; ++i) {
        s[i].clear();
        ; j < len[i]; ++j)
            if(str[i][j] == a || str[i][j] == b)s[i] += str[i][j];
    }
    ] == s[];
}

int main() {
    freopen("traces.in", "r", stdin);
    freopen("traces.out", "w", stdout);
    ];
    while(~scanf("%d%d", &n, &m)) {
        memset(mp, , sizeof(mp));
        memset(cnt, , sizeof(cnt));
        ; i < m; ++i) {
            scanf("%s", temp);
            mp[temp[] - ] - ] - ] - 'a'] = true;
        }
        scanf(]);
        scanf(]);
        len[] = strlen(str[]), len[] = strlen(str[]);

        bool flag = true;

        ;i < ;++i){
            ;j < len[i];++j){
                ++cnt[i][str[i][j] - 'a'];
            }
        }
        ][i - ][i - 'a'])flag = false;

        for(int i = 'a';flag && i < 'a' + n; ++i) {
            ; j < 'a' + n; ++j) {
                if(!mp[i - 'a'][j - 'a']) {
                    if(!test((char)i, (char)j)) {
                        i = 'a' + n;
                        flag = false;
                        break;
                    }
                }
            }
        }
        printf("%s\n", flag ? "YES" : "NO");
    }
    ;
}

  

CFGym 100211J 题解的更多相关文章

  1. CFGym 101490J 题解

    一.题目链接 http://codeforces.com/gym/101490 二.题面 三.题意 给你n个点,代表学生所在位置,n个点,代表老师所在位置.每个学生分配一个老师.让你找出一个最小的学生 ...

  2. CFGym 101490E 题解

    一.题目链接 http://codeforces.com/gym/101490 二.题面 三.题意 给你一个图,n个点,m条边,一个x,从顶点1走到顶点n.假设从顶点1走到顶点n的最短路为d,x代表你 ...

  3. CFGym 101161I 题解

    一.题目链接 http://codeforces.com/gym/101161/problem/I 二.题意 给定一棵树,一个初始的省会城市,若干个询问,0表示修改省会城市,1表示查询去省会必须经过指 ...

  4. CFGym 100198G 题解

    一.题目链接 http://codeforces.com/gym/100198/problem/G 二.题意 看样例就能明白,写表达式解析器. 三 .思路 一看这题目,立马就会想到“后缀表达式”,考虑 ...

  5. CFGym 101194L 题解

    一.题目链接 http://codeforces.com/gym/101194/problem/L 二.题意 有4个队伍,要打6场比赛(刚好每两个队伍都能相互比一次),若A和B比赛有3种结果: A赢B ...

  6. CFGym 101194D 题解

    一.题目链接 http://codeforces.com/gym/101194/problem/D 二.题意 给定一个数字n和一个数字k,一个n个整数的序列,让你在里面找尽可能多的长度为k的符合“要求 ...

  7. CFGym 101505I 题解

    一.题目链接 http://codeforces.com/gym/101505 二.题意 这题其实主要就是题意,理解题意后,就是水题了.我想了下,主要原因就是这几点: 1.题意太过英文化,很多句子不能 ...

  8. [CF-GYM]Abu Tahun Mod problem题解

    前言 这道题比较简单,但我还是想了好一会 题意简述 Abu Tahun很喜欢回文. 一个数组若是回文的,那么它从前往后读和从后往前读都是一样的,比如数组\(\left\{1\right\},\left ...

  9. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

随机推荐

  1. LA 3938 动态最大连续和(线段树)

    https://vjudge.net/problem/UVALive-3938 题意:给出一个长度为n的整数序列D,你的任务是对m个询问作出回答.对于询问(a,b),需要找到两个下标x和y,使得a≤x ...

  2. html 入门2-表

    html  入门-列表 表格 表单 一.表标签 1,无序列表 ( ul:li ) 注意:代码排版必须要层次分明 2,有序列表 (ol:li) 3,自定义列表 (dl:li) 二.表格标签 1,tabl ...

  3. json.dump()和json.load()

    import json,time # save data to json file def store(data): with open('data.json', 'w') as fw: # 将字典转 ...

  4. XML_CPP_资料

    1.TinyXML解析xml文档 - zhoubl668的专栏:远帆,梦之帆! - 博客频道 - CSDN.NET.html http://blog.csdn.net/zhoubl668/articl ...

  5. CentOS6.4x86EngCustomize120g__20160307.rar

    安装的镜像包: CentOS-6.4-i386-bin-DVD1to2(CentOS-6.4-i386-bin-DVD1.iso / CentOS-6.4-i386-bin-DVD2.iso) 1. ...

  6. [原][译][osgearth]样式表style中参数总结(OE官方文档翻译)

    几何Geometry 高度Altitude 挤压Extrusion 图标Icon 模型Model 渲染Render 皮肤Skin 文本Text 覆盖Coverage 提示: 在SDK中,样式表的命名空 ...

  7. 【C#笔札】Tryparse的用法

    这是参考读物的上得一个例子.自己仿照做的作业 private void button1_Click(object sender, EventArgs e) { int P_int_Number,i; ...

  8. Javascript 面向对象编程(补充):封装

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  9. 201621123010《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词. 继承extends.多态.抽象类 超级父类Object类.父类.子类. 覆盖Override 初始化块 识别类 重载 1.2 ...

  10. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 01

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2383] 版本控制:https://git.coding.net/liuyy08 ...