题意:

在原字符串中修改数量最少,然后保证最小字典序。

#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【构造】的更多相关文章

  1. B - Save the problem! CodeForces - 867B 构造题

    B - Save the problem! CodeForces - 867B 这个题目还是很简单的,很明显是一个构造题,但是早训的时候脑子有点糊涂,想到了用1 2 来构造, 但是去算这个数的时候算错 ...

  2. Johnny Solving CodeForces - 1103C (构造,图论)

    大意: 无向图, 无重边自环, 每个点度数>=3, 要求完成下面任意一个任务 找一条结点数不少于n/k的简单路径 找k个简单环, 每个环结点数小于n/k, 且不为3的倍数, 且每个环有一个特殊点 ...

  3. Codeforces 746G(构造)

                                                                                                      G. ...

  4. Codeforces 1188A 构造

    题意:给你一颗树,树的边权都是偶数,并且边权各不相同.你可以选择树的两个叶子结点,并且把两个叶子结点之间的路径加上一个值(可以为负数),问是否可以通过这种操作构造出这颗树?如果可以,输出构造方案.初始 ...

  5. C - Long Beautiful Integer codeforces 1269C 构造

    题解: 这里的m一定是等于n的,n为数最大为n个9,这n个9一定满足条件,根据题目意思,前k个一定是和原序列前k个相等,因此如果说我们构造出来的大于等于原序列,直接输出就可以了,否则,由于后m-k个一 ...

  6. Dividing the numbers CodeForces - 899C (构造)

    大意: 求将[1,n]划分成两个集合, 且两集合的和的差尽量小. 和/2为偶数最小差一定为0, 和/2为奇数一定为1. 显然可以通过某个前缀和删去一个数得到. #include <iostrea ...

  7. 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 ...

  8. Codeforces 772C 构造 数学 + dp + exgcd

    首先我们能注意到两个数x, y (0 < x , y < m) 乘以倍数互相可达当且仅当gcd(x, m) == gcd(y, m) 然后我们可以发现我们让gcd(x, m)从1开始出发走 ...

  9. Jzzhu and Apples CodeForces - 449C (构造,数学)

    大意: 求从[1,n]范围选择尽量多的数对, 使得每对数的gcd>1 考虑所有除2以外且不超过n/2的素数p, 若p倍数可以选择的有偶数个, 直接全部划分即可 有奇数个的话, 余下一个2*p不划 ...

随机推荐

  1. spring 集成 mybatis 后数据源初始化失败问题分析

    问题背景: 项目使用spring,springmvc框架,后边需操作关系数据库,选择了mybatis + durid,集成mybatis后,项目一直启动失败.错误的原因是dataSource初始化的时 ...

  2. Hibernate中的HQL语言

    一.HQL语言简介 HQL全称是Hibernate Query Language,它提供了是十分强大的功能,它是针对持久化对象,直接取得对象,而不进行update,delete和insert等操作.而 ...

  3. NET 并发编程

    场景并发调用API 1.简单封装httpclient public class CommonHelper { private static readonly HttpClient _httpClien ...

  4. Aspose.cells 读取Excel表中的图片问题

    一.说明 本文主要是讲解,怎么使用aspose.cells读取Excel表中的图片,并把图片转换成流或是image对象. 二.开发环境说明 开发工具vs2012,c#语言, 三.Aspose.cell ...

  5. ChannelHandler揭秘(Netty源码死磕5)

    精进篇:netty源码死磕5  揭开 ChannelHandler 的神秘面纱 目录 1. 前言 2. Handler在经典Reactor中的角色 3. Handler在Netty中的坐标位置 4. ...

  6. Java类加载器(死磕5)

    Java类加载器(  CLassLoader )  死磕5:  自定义一个文件系统classLoader 本小节目录 5.1. 自定义类加载器的基本流程 5.2. 入门案例:自定义文件系统类加载器 5 ...

  7. Java面试-Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(依据已经载入的对象.导航到其它对象. ) Ø  OID检索(依照对象的OID来检索对象. ) Ø  HQL检索(使用面向对象的HQL查询语言. ...

  8. Dynamic Web Module to 3.0 报错

    一.问题 使用maven项目创建的webapp项目Dynamic Web Module 默认是2.3. 当我们要切换到3.0的时候出现这个错误. 二.解决 1.点击进入Navigator view ( ...

  9. php设计模式之--组合模式

    php组合模式主要用于上下级关系,可以新增叶子和树枝,分析如下代码即可明白组合模式的含义: <?php header('Content-Type:text/html;charset=utf-8' ...

  10. [CPP] Coding Style

    C++ Coding Style C++很多强大的语言特性导致它的复杂,其复杂性会使得代码更容易出现bug.难于阅读和维护. 由于,本人有一点点代码洁癖,所以依照Google的C++编程规范<G ...