字符串处理 Codeforces Round #297 (Div. 2) B. Pasha and String

题目传送门

 1 /*
 2     题意:给出m个位置,每次把[p,len-p+1]内的字符子串反转,输出最后的结果
 3     字符串处理:朴素的方法超时,想到结果要么是反转要么没有反转,所以记录
 4                 每个转换的次数,把每次要反转的反转就不超时了:)
 5 */
 6 #include <cstdio>
 7 #include <algorithm>
 8 #include <cstring>
 9 using namespace std;
10 
11 const int MAXN = 2e5 + 10;
12 const int INF = 0x3f3f3f3f;
13 char s[MAXN];
14 int to[MAXN];
15 
16 int main(void)        //Codeforces Round #297 (Div. 2) B. Pasha and String
17 {
18     int m;
19     scanf ("%s", s + 1);
20     int len = strlen (s + 1);
21     scanf ("%d", &m);
22     while (m--)
23     {
24         int p;    scanf ("%d", &p);
25         int q = len - p + 1;
26         to[p]++;
27     }
28 
29     int sum = 0;
30     for (int i=1; i<=len/2; ++i)
31     {
32         sum += to[i];
33         if (sum & 1)    swap (s[i], s[len-i+1]);
34     }
35     printf ("%s", s + 1);
36 
37     return 0;
38 }
39 
40 
41 
42 /*
43 abcdef
44 1
45 2
46 vwxyz
47 2
48 2 2
49 abcdef
50 3
51 1 2 3
52 */
编译人生,运行世界!
原文地址:https://www.cnblogs.com/Running-Time/p/4531162.html