CF424A Squats 题解
2024-10-16 00:40:19
Content
给定一个长度为 \(n\) 的仅由 x
和 X
组成的字符串,求使得字符串中 x
和 X
的数量相等需要修改的次数,并输出修改后的字符串。
数据范围:\(2\leqslant n\leqslant 200,2\mid n\)。
Solution
首先得统计一下 x
的个数 \(num_x\) 和 X
的个数 \(num_X\),不难看出,答案就是 \(\dfrac{|num_x-num_X|}{2}\)。得到答案后再扫一遍把出现次数多的字符替换成出现次数少的字符,直到出现次数相等为止。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
int len, numx, numX;
string s;
int main() {
scanf("%d", &len);
cin >> s;
for(int i = 0; i < len; ++i) numx += (s[i] == 'x'), numX += (s[i] == 'X');
printf("%d\n", abs(numx - numX) / 2);
if(numx > numX)
for(int i = 0; i < len; ++i) {
if(s[i] == 'x') {
s[i] = 'X', numx--, numX++;
if(numx == numX) {cout << s; return 0;}
}
}
else if(numx == numX) {cout << s; return 0;}
else
for(int i = 0; i < len; ++i)
if(s[i] == 'X') {
s[i] = 'x', numx++, numX--;
if(numx == numX) {cout << s; return 0;}
}
return 0;
}
最新文章
- DevExpress v15.2.4帮助文档下载(全)
- August 1st, 2016, Week 32nd Monday
- FZU 2092 bfs+记忆化搜索
- MapReduce框架Partitioner分区方法
- 来TN公司两周的记录
- (转)浅谈.NET下的多线程和并行计算(一)前言
- iOS: 属性声明strong和retain竟然不一样
- UVA 10985 - Rings&#39;n&#39;Ropes(floyd)
- nc命令 (NetCat)
- Lua中的require(转)
- return *this和return this有什么区别?
- 通过git命令行从github或服务器上克隆、修改和更新项目
- java加减天数
- Oracle EBS AP 发票放弃行
- Canvas动画 位图缓存提高效率和对应的内存问题
- shell实例浅谈之一产生随机数七种方法
- bzoj 3924 [Zjoi2015]幻想乡战略游戏——动态点分治(暴力移动找重心)
- U盘安装Ubuntu 12.04成功后系统无法启动的原因及解决办法
- Murano Weekly Meeting 2016.05.10
- CURL抓取网页内容
热门文章
- 异常处理截止和UML图
- Codeforces 750E - New Year and Old Subsequence(线段树维护矩阵乘法,板子题)
- CF 786 E ALT
- 比对软件Blast,Blast+,Diamond比较
- c6和c7
- xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持
- CPF C#跨平台UI框架发布安卓端预览版
- Hadoop入门 概念
- Learning Spark中文版--第四章--使用键值对(1)
- promise.all的应用场景举例