CodeForces 591B Rebranding

The name of one small but proud corporation consists of n lowercase English letters. The Corporation has decided to try rebranding — an active marketing strategy, that includes a set of measures to change either the brand (both for the company and the goods it produces) or its components: the name, the logo, the slogan. They decided to start with the name.

For this purpose the corporation has consecutively hired m designers. Once a company hires the i-th designer, he immediately contributes to the creation of a new corporation name as follows: he takes the newest version of the name and replaces all the letters xi by yi, and all the letters yi by xi. This results in the new version. It is possible that some of these letters do no occur in the string. It may also happen that xicoincides with yi. The version of the name received after the work of the last designer becomes the new name of the corporation.

Manager Arkady has recently got a job in this company, but is already soaked in the spirit of teamwork and is very worried about the success of the rebranding. Naturally, he can‘t wait to find out what is the new name the Corporation will receive.

Satisfy Arkady‘s curiosity and tell him the final version of the name.

Input

The first line of the input contains two integers n and m (1 ≤ n, m ≤ 200 000) — the length of the initial name and the number of designers hired, respectively.

The second line consists of n lowercase English letters and represents the original name of the corporation.

Next m lines contain the descriptions of the designers‘ actions: the i-th of them contains two space-separated lowercase English letters xiand yi.

Output

Print the new name of the corporation.

Sample test(s)

input

6 1policep m

output

molice

input

11 6abacabadabaa bb ca de gf ab b

output

cdcbcdcfcdc

题意:给出一个字符串,现在有m次变换,每次变换需要两个字母a和b互换,问m次变换后新的字符串是什么。

因为只有26个字母,那么每次变换时将它们的位置变换一下,然后对应输出就行啦。

#include<stdio.h>
#include<string.h>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;

const int N=1e6+10;
const int INF=0x3f3f3f3f;

char s[N];

int main ()
{
    int n, m, i;
    char a[5], b[5];
    int c[30]; ///c[i]表示‘a‘+i这个字母应该要变换成‘a‘+c[i]

    while (scanf("%d%d", &n, &m) != EOF)
    {
        scanf("%s", s);

        for (i = 0; i < 26; i++)
            c[i] = i;

        while (m--)
        {
            int aa, bb;

            scanf("%s %s", a, b);

            for (i = 0; i < 26; i++)
            {
                if (c[i] == a[0]-‘a‘)
                    aa = i;
                if (c[i] == b[0]-‘a‘)
                    bb = i;
            }

            swap(c[aa], c[bb]); ///找到与之对应的位置,互换
        }

        for (i = 0; s[i] != ‘\0‘; i++)
            printf("%c", c[s[i]-‘a‘] + ‘a‘);

        printf("\n");
    }

    return 0;
}
时间: 2024-09-30 16:34:58

CodeForces 591B Rebranding的相关文章

codeforces 591B Rebranding (模拟)

Rebranding Problem Description The name of one small but proud corporation consists of n lowercase English letters. The Corporation has decided to try rebranding - an active marketing strategy, that includes a set of measures to change either the bra

CodeForces 591B

题目链接: http://codeforces.com/problemset/problem/591/B 题意: 给你一串字符串,字符串里的字符全是a-z的小写字母,下面的m行,是字符串的交换方式, 如果输入的是 x  y,则是字母x与字母y交换,且字母y与字母x也要交换 解题思路: n和m的范围在2*10^5内,如果直接暴力肯定会超时: 所以只能采取智慧的方法 可以先定义 char a[26]={'a','b','c','d','e','f','g','h','i','j','k','l','

Codeforces Round #327 (Div2)

CodeForces 591A 题意:在距离为L的两端A,B,相向发射魔法,a(以P1的速度)-->B,A<--b(以P2的速度).假设a-->B,途中相遇,则返回到原点A<--a. 后又继续,a-->B,速度不变. b亦是如此.求第二次相遇时a的位移. 思路:因为速度不变,所以第二次相遇地点与第一次相遇地点一样. res= n/(Va+Vb)*Va 代码: 1 #include <iostream> 2 #include <cstdio> 3 #in

Codeforces Round #327 (Div. 2) B. Rebranding C. Median Smoothing

B. Rebranding The name of one small but proud corporation consists of n lowercase English letters. The Corporation has decided to try rebranding — an active marketing strategy, that includes a set of measures to change either the brand (both for the

Codeforces Round #327 (Div. 2) B. Rebranding 模拟

B. Rebranding The name of one small but proud corporation consists of n lowercase English letters. The Corporation has decided to try rebranding — an active marketing strategy, that includes a set of measures to change either the brand (both for the

Codeforces Round #327 (Div. 2) B Rebranding

1 /* 2 3 自从做了DP专题就没做cf惹,然而并没有什么用哇= =dp还是没啥赶脚,cf也欠了一大堆哇,还是渣渣哦多克! 4 题意: 5 给出字符串长度和要互换的字母组数,求互换后的串. 6 把每个字母最后换成啥保存起来最后输出即可. 7 */ 8 #include<cstdio> 9 #include<algorithm> 10 #include<cstring> 11 using namespace std; 12 const int maxn=200005;

随笔—邀请赛前训—Codeforces Round #327 (Div. 2) Rebranding

题意:一个字符串,做n次变换,每次变换是把a字符与b字符全部调换.求全部调换完成后的字符串. 这道题目我一开始理解错意思了,理解成将所有a字符变成b字符,我觉得这样出貌似还更有挑战性一点..口亨 #include<cstdio> #include<cstring> #include<map> #include<iostream> using namespace std; #define MAX(x,y) (((x)>(y)) ? (x) : (y))

【codeforces 718E】E. Matvey&#39;s Birthday

题目大意&链接: http://codeforces.com/problemset/problem/718/E 给一个长为n(n<=100 000)的只包含‘a’~‘h’8个字符的字符串s.两个位置i,j(i!=j)存在一条边,当且仅当|i-j|==1或s[i]==s[j].求这个无向图的直径,以及直径数量. 题解:  命题1:任意位置之间距离不会大于15. 证明:对于任意两个位置i,j之间,其所经过每种字符不会超过2个(因为相同字符会连边),所以i,j经过节点至多为16,也就意味着边数至多

Codeforces 124A - The number of positions

题目链接:http://codeforces.com/problemset/problem/124/A Petr stands in line of n people, but he doesn't know exactly which position he occupies. He can say that there are no less than a people standing in front of him and no more than b people standing b