codeforces B. Pasha and String(贪心)

题意:给定一个长度为len的字符序列,然后是n个整数,对于每一个整数ai,
将字符序列区间为[ai,len-ai+1]进行反转。求出经过n次反转之后的序列!

 1 /*
 2      思路1:将区间为偶数次的直接去掉!对剩下的区间进行反转。超时了,智商上的压制... 
 3 */ 
 4 #include<iostream> 
 5 #include<cstdio> 
 6 #include<algorithm> 
 7 #include<stack>
 8 #include<cstring>
 9 #include<vector>
10 #define N 100005
11 using namespace std;
12 char mp[2*N];
13 int num[N];
14 int cnt[N*2];
15 
16 void my_swap(int &a, int &b){
17     a^=b;
18     b^=a;
19     a^=b;
20 }
21 
22 void my_reverse(int x, int y){
23     for(int i=x, j=y; i<j; ++i, --j){
24         char tmp = mp[i];
25         mp[i] = mp[j];
26         mp[j] = tmp;
27     }
28 }
29 
30 int main() {
31      scanf("%s", mp+1);
32     int m, mm=0;
33     cin>>m; 
34     for(int i=0; i<m; ++i){
35         scanf("%d", &num[i]);
36         ++cnt[num[i]];
37     }
38     
39     int len = strlen(mp+1);
40     for(int i=1; i<=len/2; ++i){
41         if(cnt[num[i]] + cnt[len-num[i]+1])%2!=0){
42             int x = num[i];
43             int begin = x, end= len-x+1;
44             if(begin > end) my_swap(begin, end);
45             my_reverse(begin, end);
46         }
47     }
48     printf("%s\n", mp+1);
49 }
 1 /*
 2     思路2:仔细分析,每一个反转的区间左右是对称的,如果[ai, len-ai+1]区间进行反转,
 3     那么就有str[ai]与str[len-ai+1]交换,str[ai+1]与str[len-ai]交换.....
 4     也就是ai位置发生交换,那么ai+1,ai+2...len/2也一定发生交换。如果ai位置的交换的次数
 5     为偶数就不用交换,为奇数就进行交换! 
 6 */
 7 #include<iostream> 
 8 #include<cstdio> 
 9 #include<algorithm> 
10 #include<stack>
11 #include<cstring>
12 #include<vector>
13 #define N 100005
14 using namespace std;
15 char mp[2*N];
16 int cnt[N*2];//统计每一个位置交换的次数 
17 
18 int main() {
19     scanf("%s", mp+1);
20     int m, mm=0;
21     scanf("%d", &m) ;
22     int len = strlen(mp+1);
23     while(m--){
24         int x;
25         scanf("%d", &x);
26         ++cnt[x], ++cnt[len-x+1];
27     }
28     
29     for(int i=2; i<=len/2; ++i)
30         cnt[i] += cnt[i-1];//第i个位置交换,那么第i+1,i+2..len/2个位置也一定发生交换 
31     
32     for(int i=1; i<=len/2; ++i)
33         if(cnt[i]%2!=0)//奇数位置交换 
34             swap(mp[i], mp[len-i+1]);
35     printf("%s\n", mp+1);
36 }

 

转载于:https://www.cnblogs.com/hujunzheng/p/4382105.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/531509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java简单词法分析器(源码下载)

java简单词法分析器 : http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%8D%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4383880.html

java 模拟qq源码

java 模拟qq源码&#xff1a; http://files.cnblogs.com/files/hujunzheng/QQ--hjzgg.zip 转载于:https://www.cnblogs.com/hujunzheng/p/4390307.html

蓝桥杯 算法提高 日期计算

算法提高 日期计算 时间限制&#xff1a;1.0s 内存限制&#xff1a;256.0MB问题描述已知2011年11月11日是星期五&#xff0c;问YYYY年MM月DD日是星期几&#xff1f;注意考虑闰年的情况。尤其是逢百年不闰&#xff0c;逢400年闰的情况。 输入格式输入只有一行YYYY MM DD 输出…

java JFileChooser选择文件和保存文件

//文件过滤器import java.io.File;import javax.swing.filechooser.FileFilter;public class MyFilter extends FileFilter{private String[] filterString null;public MyFilter(String[] filStrings){this.filterString filStrings;}public boolean accept(File file){if(f…

指针详解

c语言相比其他高级语言来说,更接近于对计算机硬件的操作,而指针的应用更是为我们对硬件的操作插上了翅膀,所以指针是嵌入式编程不可少的一部分,在一定意义上说,指针是c语言的精髓。 欢迎加入嵌入式学习群:559601187 一、 什么是指针 在计算机中,数据时存放在内存中的,…

反质数问题,求不大于n的最大反质数

反质数&#xff1a;设f(n)表示n个约数的个数&#xff0c;如果对于任意x有0<x<n, f(x) < f(n),那么n就是一个反质数我们都知道对于任意一个数n&#xff0c;都可以用质数乘积的形式表示出来&#xff1a;x p1^k1p2^k2...pn^kn一个数n如果可以表示成 n p1^k1 p2^k2, 那…

c语言之结构

今天来说一下C语言里的结构体(struct)、共用体(l联合体)union、枚举。 欢迎加入嵌入式学习群&#xff1a;559601187 &#xff08;一&#xff09;结构体&#xff1a;struct 1.1 概念 是一种自定义的数据类型结构体是构造类型的一种不同数据类型的集合地址空间连续&#xff0c;…

猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)

猫和老鼠 蓝桥杯&#xff0f;手速&#xff0f;暴力练习赛 【题目描述】猫和老鼠在10*10 的方格中运动&#xff0c;例如&#xff1a;*...*...........*......*...*...............*.C....*.....*......*........M......*...*.*.....*.*......C猫&#xff08;CAT&#xff09;M老鼠…

STM32 4*4矩阵按键

本文章讲述了如何用STM32编写4*4矩阵按键程序&#xff0c;先简单介绍一下扫描的基本方法&#xff1a;1.反转法 2.行列扫描。本文主要介绍行列扫描 欢迎加入嵌入式学习群&#xff1a;559601187 &#xff08;一&#xff09;代码如下 /*****************************************…

编译原理:正规式转变成DFA算法

//将正规式转变成NFApackage hjzgg.formal_ceremony_to_dfa;import java.util.ArrayList;class Edge{public int u, v;public char key;public Edge(int u, int v, char key) {super();this.u u;this.v v;this.key key;}Overridepublic String toString() {return u "…

C语言实现音乐播放器(Linux madplay)

&#xff08;一&#xff09;需求分析 1.扫描指定路径下的音乐&#xff0c;并显示出来 2.实现音乐的播放、暂停、上一首和下一首的功能 3.程序退出释放内存资源 &#xff08;二&#xff09;思路 1.扫描出指定路径下的音乐文件(便利指定文件夹&#xff0c;找出音频文件放在数组…

编译原理(简单自动词法分析器LEX)

编译原理&#xff08;简单自动词法分析器LEX&#xff09;源程序下载地址&#xff1a; http://files.cnblogs.com/files/hujunzheng/%E6%B1%87%E7%BC%96%E5%8E%9F%E7%90%86%E7%AE%80%E5%8D%95LEX%EF%BC%88%E8%AF%8D%E6%B3%95%E8%87%AA%E5%8A%A8%E5%88%86%E6%9E%90%E5%99%A8%EF%…

虚拟机中安装linux

&#xff08;一&#xff09;前言 就在昨天电脑的固态突然崩掉&#xff0c;无奈重新把系统装在的以前的硬盘上&#xff0c;为了能够继续工作重新配置嵌入式linux系统开发环境&#xff0c;本教程主要记录在虚拟机中安装linux。 &#xff08;二&#xff09;环境准备 虚拟机&…

编译原理简单语法分析器(first,follow,分析表)源码下载

编译原理&#xff08;简单语法分析器下载&#xff09; http://files.cnblogs.com/files/hujunzheng/%E5%8A%A0%E5%85%A5%E5%90%8C%E6%AD%A5%E7%AC%A6%E5%8F%B7%E5%90%8E%E7%9A%84%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip 转载于:https://www.cnblogs.com/hujunzheng…

Ubuntu设置root登录

1.、Ubuntu 管理员用户 root 默认没有密码&#xff0c;在使用前最好添加密码&#xff0c;使用指令&#xff1a; sudo passwd root 注意&#xff1a;命令行输入密码时不显示&#xff0c;输入时需注意密码的准确性&#xff1b; 2、Ubuntu 想要用 root 帐户登录&#xff0c;可在普…

vim配置之spacevim

为了更好的利用vim&#xff0c;我们一般需要自己配置&#xff0c;今天介绍了一下经常用的spacevim &#xff08;一&#xff09;配置环境 Ubuntu16.04vim 7.4版本以上(必须&#xff01;&#xff01;) &#xff08;二&#xff09;安装spacevim 1.检查vim的版本&#xff1a; v…

Ubuntu更换gnome桌面环境后不能root登录

安装完Ubuntu后感觉界面有点丑陋&#xff0c;安装了gnome桌面环境试一下 sudo apt-get install gnome-shell sudo apt-get install ubuntu-gnome-desktop如果选择了lightdm后可以使用sudo dpkg-reconfigure gdm3 重新改回gdm3 sudo apt-get install unity-tweak-tool sudo ap…

Ubuntu下安装tilix终端仿真器

安装环境 Ubuntu 16.04 操作步骤 首先添加这个终端模拟器仓库的公钥。这里我都是以root超级用户权限操作的&#xff0c;如果没有的话&#xff0c;请在命令前面加sudo。 add-apt-repository ppa:webupd8team/terminixapt update安装Tilix。 apt install tilix安装完成测试结…

(扩展欧几里德算法)zzuoj 10402: C.机器人

10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼&#xff0c;既能原地蹦&#xff0c;又能跳远。由于受软硬件设计所限&#xff0c;机器人卡尔只能定点跳远。若机器人站在&#xff08;X&#xff0c;Y&#xff09;位置&#xff0c;它可以原地蹦&#xff0c;但只可…

vim配置之snippets代码块

&#xff08;一&#xff09;目的 我们在编写程序的过程中&#xff0c;经常会敲一些重复的代码&#xff0c;我们可以利用snippets来达到输入简写来敲出完整的代码 &#xff08;二&#xff09;安装步骤 安装使用Vundle,没有vbundle的先执行下面的命令 git clone https://gith…