coderforce 525B. Pasha and String
2015-11-18 17:22
218 查看
解题说明:此题是一道模拟题,题意是给出一个长度不超过2*10^5的字符串,进行m次反转。每次反转第a个到第len-a+1个字符之间这一段。求经过m次反转后的字符串是什么。其中len
为字符串的长度。具体做法是对于第i个字符,只有它之前的字符(包括自己)需要反转时,才会引起第i个字符的位置改变。所以我们只需要判断第i个字符的位置一共变了多少次,如果是奇数次,就让它改变位置;否则位置不变。
为字符串的长度。具体做法是对于第i个字符,只有它之前的字符(包括自己)需要反转时,才会引起第i个字符的位置改变。所以我们只需要判断第i个字符的位置一共变了多少次,如果是奇数次,就让它改变位置;否则位置不变。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int maxm=2e5+10; char s[maxm]; int v[maxm]; int main() { while(scanf("%s",s)!=EOF) { int n,m; memset(v,0,sizeof(v)); scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&m); m--; v[m]++; } int len=strlen(s); int length=len; if(len%2==0) { len/=2; } else { len=(len/2)+1; } int sum=0; for(int i=0;i<len;i++) { sum+=v[i]; if(sum%2==1) { swap(s[i],s[length-1-i]); } } printf("%s\n",s); } return 0; }
相关文章推荐
- MVC 溯源
- php-fpm的配置和优化
- mysql启动的四种方式
- 本机搭建zookeeper集群
- mssqlserver 分日志(日志文件过大)
- linux进程管理、任务管理
- 07 ISIS路由协议
- ArcGIS JS 版军事标绘图(燕尾箭头、钳击箭头、集结地)扇形等自定义图形
- 获取当前安装app列表
- 数据结构之(3)栈和队列
- mysql 使用 记录
- Linux系统 Centos7 yum命令在线安装 MySQL5.6
- 魅族/锤子/苹果 悬停效果的实现
- hadoop之 mr输出到hbase
- 转:如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题
- V8 data struct
- 一路走来 Android NDK 踩过的坑
- 06 OSPF路由器协议
- 什么是智能机
- 流