327 (Div. 2) B

来源:互联网 发布:java中的restfull接口 编辑:程序博客网 时间:2024/05/16 13:46

#include<cstdio>#include<iostream>#include<map>#include<algorithm>#include<queue>#include<string>#include<cstring>#include<set>#define LL long long #define N 200009using namespace std;int a[N];char s[N];vector<int>g[150];int vis[N];int main(){#ifdef CDZSC    freopen("i.txt", "r", stdin);#endif    int n, m;    char s1[5], s2[5];    while (~scanf("%d%d", &n, &m))    {        for (int i = 0; i < 150; i++)            g[i] = vector<int>();        scanf("%s", s);        for (int i = 0; s[i]; i++)        {            g[s[i]].push_back(i);        }        while (m--)        {            scanf("%s%s", s1, s2);            swap(g[s1[0]], g[s2[0]]);        }        for (char i = 'a'; i <= 'z'; i++)        {            for (int j = 0; j < g[i].size(); j++)            {                s[g[i][j]] = i;             }        }        printf("%s\n", s);    }    return 0;}


我在写这题想的有点复杂,直接模拟暴力是不可以的,最后才想到可以用图去保存26个字母的下标位置,如果两个字母互换,就直接交换着两个字母的下标集合就可以了,时间复杂度可以从O(n*m)降低为o(m)。然而在想的这些后还是超时了,最后我试着把无关紧要的语句memset(vis, 0, sizeof(vis))删去就神奇的过了,原来memset的复杂度是O(n),这是我从来没有想到的。今后一定要小心使用memset函数啊!!!!!!!!!!!!!!!!!


while (m--)//超时代码        {            memset(vis, 0, sizeof(vis));            scanf("%s%s", s1, s2);            swap(g[s1[0]], g[s2[0]]);        }





B. Rebranding
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

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 xiby 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 xi coincides 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
Note

In the second sample the name of the corporation consecutively changes as follows:



0 0