CodeForces 600C【构造】
题意:
在原字符串中修改数量最少,然后保证最小字典序。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e5+10;
int a[100];
char s[N];
char ans[N];
int main()
{
scanf("%s",s);
int len=strlen(s);
memset(a,0,sizeof(a));
if(len%2==0)
{
for(int i=0;i<len;i++)
{
int x=s[i]-'a';
a[x]++;
}
for(int i=0;i<26;i++)
{
if(a[i]%2)
{
for(int j=25;j>i;j--)
{
if(a[j]%2)
{
a[j]--;
a[i]++;
break;
}
}
}
}
int s=0;
int t=len-1;
for(int i=0;i<26;i++)
{
if(a[i]&&a[i]%2==0)
{
while(a[i])
{
ans[s++]=i+'a';
ans[t--]=i+'a';
a[i]-=2;
}
}
}
ans[len]='\0';
printf("%s\n",ans);
}
else
{
for(int i=0;i<len;i++)
{
int x=s[i]-'a';
a[x]++;
}
for(int i=0;i<26;i++)
{
if(a[i]%2!=0)
{
for(int j=25;j>i;j--)
{
if(a[j]&&a[j]%2!=0)
{
a[j]--;
a[i]++;
break;
}
}
}
}
int s=0;
int t=len-1;
for(int i=0;i<26;i++)
{
if(a[i]&&a[i]%2==0)
{
while(a[i]>0)
{
a[i]-=2;
ans[s++]=i+'a';
ans[t--]=i+'a';
}
}
if(a[i]&&a[i]%2!=0)
{
while(a[i]>1)
{
a[i]-=2;
ans[s++]=i+'a';
ans[t--]=i+'a';
}
ans[len/2]=i+'a';
}
}
ans[len]='\0';
printf("%s\n",ans);
}
return 0;
}
CodeForces 600C【构造】的更多相关文章
- B - Save the problem! CodeForces - 867B 构造题
B - Save the problem! CodeForces - 867B 这个题目还是很简单的,很明显是一个构造题,但是早训的时候脑子有点糊涂,想到了用1 2 来构造, 但是去算这个数的时候算错 ...
- Johnny Solving CodeForces - 1103C (构造,图论)
大意: 无向图, 无重边自环, 每个点度数>=3, 要求完成下面任意一个任务 找一条结点数不少于n/k的简单路径 找k个简单环, 每个环结点数小于n/k, 且不为3的倍数, 且每个环有一个特殊点 ...
- Codeforces 746G(构造)
G. ...
- Codeforces 1188A 构造
题意:给你一颗树,树的边权都是偶数,并且边权各不相同.你可以选择树的两个叶子结点,并且把两个叶子结点之间的路径加上一个值(可以为负数),问是否可以通过这种操作构造出这颗树?如果可以,输出构造方案.初始 ...
- C - Long Beautiful Integer codeforces 1269C 构造
题解: 这里的m一定是等于n的,n为数最大为n个9,这n个9一定满足条件,根据题目意思,前k个一定是和原序列前k个相等,因此如果说我们构造出来的大于等于原序列,直接输出就可以了,否则,由于后m-k个一 ...
- Dividing the numbers CodeForces - 899C (构造)
大意: 求将[1,n]划分成两个集合, 且两集合的和的差尽量小. 和/2为偶数最小差一定为0, 和/2为奇数一定为1. 显然可以通过某个前缀和删去一个数得到. #include <iostrea ...
- Make Palindrome CodeForces - 600C(思维)
A string is called palindrome if it reads the same from left to right and from right to left. For ex ...
- Codeforces 772C 构造 数学 + dp + exgcd
首先我们能注意到两个数x, y (0 < x , y < m) 乘以倍数互相可达当且仅当gcd(x, m) == gcd(y, m) 然后我们可以发现我们让gcd(x, m)从1开始出发走 ...
- Jzzhu and Apples CodeForces - 449C (构造,数学)
大意: 求从[1,n]范围选择尽量多的数对, 使得每对数的gcd>1 考虑所有除2以外且不超过n/2的素数p, 若p倍数可以选择的有偶数个, 直接全部划分即可 有奇数个的话, 余下一个2*p不划 ...
随机推荐
- public,protected,private,static,final的区别(转载)
1.类 (1)在java中有public.protected.private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类.变量等前没加显示的可见性修饰符,那它 ...
- WPF控件模板和数据模板 - 醉意人间
来自:http://www.th7.cn/Program/WPF/2011/12/21/51676.shtml ControlTemplate用于描述控件本身. 使用TemplateBinding来绑 ...
- XShell连接不了虚拟机
本机安装好虚拟机和centeros; 使用xshell连接: linux Could not connect to '127.0.0.1' (port 22): Connection failed. ...
- ElasticSearch(二)核心概念
elasticsearch核心概念 (1)Near Realtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒):基于es执行搜索和分析可以达到秒级 (2)Clu ...
- 初识代码封装工具SWIG(回调Python函数)
这不是我最早使用swig了,之前在写Kynetix的时候就使用了swig为python封装了C语言写的扩展模块.但是当时我对C++还不是很了解,对其中的一些概念也只是拿来直接用,没有理解到底是什么,为 ...
- A Windows GUI for Appium
A Windows GUI for Appium If you are new to Appium then please see the Getting started guide for more ...
- Web UI回归测试 -- BackstopJS 入门
BackstopJS是一个测试工具,用于测试ui图和实际项目是否偏差. 话不多说,直接启动一个项目吧测试吧. 1.首先全局安装BackstopJS npm install -g backstopjs ...
- CSU - 1547 Rectangle —— DP(01背包)
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1547 题解: 关键是怎么处理长度为1的长方形.当长度为1的长方形的个数cnt> ...
- python多进程执行任务
https://blog.csdn.net/qq_39694935/article/details/84552076 [Python]multiprocessing Pool 进程间通信共享 直接上代 ...
- BestCoder3 1002 BestCoder Sequence(hdu 4908) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4908 题目意思:给出 一个从1~N 的排列你和指定这个排列中的一个中位数m,从这个排列中找出长度为奇数 ...