CodeForces 525B Pasha and String 水题
2015-11-15 21:21
459 查看
对每一个翻转[a,|s|-a+1],在a和|s|-a+1都打标记。
所以遇到一次标记就翻转。
所以遇到奇数次标记就认为是已经翻转过,偶数次标记相当于没翻转。
#include <cstdio>
#include <cstring>
#define FOR(i,j,k) for(i=j;i<=k;i++)
char s[200001];
int c[200001];
int main() {
scanf("%s", s + 1);
int i, n = strlen(s + 1), m, x;
scanf("%d", &m);
FOR(i,1,m) scanf("%d",&x),c[x]++,c[n-x+2]--;
FOR(i,2,n) c[i]+=c[i-1];
FOR(i,1,n) putchar((c[i]&1)?s[n-i+1]:s[i]);
return 0;
}
Pasha got a very beautiful string s for his birthday, the string consists of lowercase Latin letters. The letters in the string are
numbered from 1 to |s| from left to right, where |s| is
the length of the given string.
Pasha didn't like his present very much so he decided to change it. After his birthday Pasha spent m days performing the following
transformations on his string — each day he chose integer ai and reversed a
piece of string (a segment) from position ai to
position |s| - ai + 1.
It is guaranteed that 2·ai ≤ |s|.
You face the following task: determine what Pasha's string will look like after m days.
Input
The first line of the input contains Pasha's string s of length from 2 to 2·105 characters,
consisting of lowercase Latin letters.
The second line contains a single integer m (1 ≤ m ≤ 105) —
the number of days when Pasha changed his string.
The third line contains m space-separated elements ai (1 ≤ ai; 2·ai ≤ |s|) — the
position from which Pasha started transforming the string on the i-th day.
Output
In the first line of the output print what Pasha's string s will look like after m days.
Sample test(s)
input
output
input
output
input
output
所以遇到一次标记就翻转。
所以遇到奇数次标记就认为是已经翻转过,偶数次标记相当于没翻转。
#include <cstdio>
#include <cstring>
#define FOR(i,j,k) for(i=j;i<=k;i++)
char s[200001];
int c[200001];
int main() {
scanf("%s", s + 1);
int i, n = strlen(s + 1), m, x;
scanf("%d", &m);
FOR(i,1,m) scanf("%d",&x),c[x]++,c[n-x+2]--;
FOR(i,2,n) c[i]+=c[i-1];
FOR(i,1,n) putchar((c[i]&1)?s[n-i+1]:s[i]);
return 0;
}
Pasha got a very beautiful string s for his birthday, the string consists of lowercase Latin letters. The letters in the string are
numbered from 1 to |s| from left to right, where |s| is
the length of the given string.
Pasha didn't like his present very much so he decided to change it. After his birthday Pasha spent m days performing the following
transformations on his string — each day he chose integer ai and reversed a
piece of string (a segment) from position ai to
position |s| - ai + 1.
It is guaranteed that 2·ai ≤ |s|.
You face the following task: determine what Pasha's string will look like after m days.
Input
The first line of the input contains Pasha's string s of length from 2 to 2·105 characters,
consisting of lowercase Latin letters.
The second line contains a single integer m (1 ≤ m ≤ 105) —
the number of days when Pasha changed his string.
The third line contains m space-separated elements ai (1 ≤ ai; 2·ai ≤ |s|) — the
position from which Pasha started transforming the string on the i-th day.
Output
In the first line of the output print what Pasha's string s will look like after m days.
Sample test(s)
input
abcdef 1 2
output
aedcbf
input
vwxyz 2 2 2
output
vwxyz
input
abcdef 3 1 2 3
output
fbdcea
相关文章推荐
- Linux命令(7):常用git命令
- 一个人的核心竞争力是什么?
- Disk Storage
- 今天复习第八课!
- SQL Server2008问题解决
- 姿态传感器DMS05检测出现异常
- Shell字符串匹配
- 双端链表
- Mac下make时报错malloc.h: No such file or directory的解决方法
- Fragment从入门到精通之创建一个fragment②
- 最后一次大道至简读后感
- 飞翔(LIS变形)
- “ctype.h”头文件
- rmdir() 函数
- FOJ有奖月赛-2015年11月 Problem F 攻占计划
- sql server 数据类型numeric()等的用法!
- Hibernate之管理session与批处理
- Hibernate之管理session与批处理
- Classic network server architecture model
- 事件对象