CF1102D-Balanced Ternary String-(贪心)
http://codeforces.com/problemset/problem/1102/D
题意:
有n个字符,只能为012,现要通过变换让012的数量相等,并且使字典序最小。
解题:
由样例可以看出不能打乱原来的位置,按001122这样输出,只能一个一个替换,贪心。
1)只有0少了:优先把多余的2换成0,再把多余的1换成0。
2)只有1少了:优先把多余的2换成1,等0够了再把多余的0换成1。
3)只有2少了:等0和1够了,优先把多余的1换成2,再把多余的0换成2。
4)0和1都少了:2优先换成0,再换成1,再输出自己的。
5)0和2都少了:1优先换成0,1够了再换成2。
6)1和2都少了:0够了再把多余的0换成1,再换成2。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int n;
string s; int main()
{
while(cin>>n)
{
cin>>s;
int x=n/;
int zero=,one=,two=;
for(int i=;i<n;i++)
{
if( s[i]=='' )
zero++;
else if(s[i]=='')
one++;
else
two++;
}
zero-=x;
one-=x;
two-=x;
if( zero< && one>= && two>= )
{
for(int i=;i<n;i++)
{
if( s[i]=='' && zero< && two> )
s[i]='',zero++,two--;
else if( s[i]=='' && zero< && one> )
s[i]='',zero++,one--;
}
}
else if( one< && zero>= && two>= )
{
int now0=;
for(int i=;i<n;i++)
{
if(s[i]=='' && now0<x)
now0++;
else if( s[i]=='' && one< && two> )
s[i]='',one++,two--;
else if( s[i]=='' && one< && zero> && now0==x )
s[i]='',one++,zero--;
}
}
else if( two< && zero>= && one>= )
{
int now0=,now1=;
for(int i=;i<n;i++)
{
if(s[i]=='' && now0<x)
now0++;
else if( s[i]=='' && now1<x )
now1++;
else if( s[i]=='' && one> && now1==x && two< )
s[i]='',one--,two++;
else if( s[i]=='' && zero> && now0==x && two< )
s[i]='',zero--,two++; }
}
else if( zero< && one< && two> )
{
for(int i=;i<n;i++)
if( s[i]=='' && two> && zero< )
s[i]='',two--,zero++;
else if( s[i]=='' && two> && one< )
s[i]='',two--,one++;
}
else if( zero< && two< && one> )
{
int now1=;
for(int i=;i<n;i++)
{
if( s[i]=='' && zero== && now1<x )
now1++;
else if( s[i]=='' && zero< && one> )
s[i]='',zero++,one--;
else if( s[i]=='' && now1==x && two< && one> )
s[i]='',two++,one--; }
}
else if( one< && two< && zero> )
{
int now0=;
for(int i=;i<n;i++)
{
if( s[i]=='' && now0<x )
now0++;
else if( s[i]=='' && one< && now0==x && zero> )
s[i]='',one++,zero--;
else if( s[i]=='' && two< && now0==x && zero> )
s[i]='',two++,zero--;
}
}
cout<<s<<endl;
}
return ;
}
CF1102D
CF1102D-Balanced Ternary String-(贪心)的更多相关文章
- Codeforces Round #531 (Div. 3) D. Balanced Ternary String (贪心)
题意:给你一个长度为\(3*n\)的字符串,要求修改最少的次数,使得字符串中\(0,1,2\)的个数相同,并且在最少次数的情况下使字典序最小. 题解:贪心,\(0\)一定放在前面,\(1\)和\(2\ ...
- Balanced Ternary String CodeForces - 1102D (贪心+思维)
You are given a string ss consisting of exactly nn characters, and each character is either '0', '1' ...
- Balanced Ternary String(贪心+思维)
题目链接:Balanced Ternary String 题目大意:给一个字符串,这个字符串只由0,1,2构成,然后让替换字符,使得在替换字符次数最少的前提下,使新获得的字符串中0,1,2 这三个字符 ...
- D - Balanced Ternary String (贪心)
题目链接:http://codeforces.com/contest/1102/problem/D 题目大意:给你一个字符串,这个字符串是由0,1,2构成的,然后让你替换字符,使得在替换的次数最少的前 ...
- 牛客多校第四场 A Ternary String
题目描述 A ternary string is a sequence of digits, where each digit is either 0, 1, or 2. Chiaki has a t ...
- 2018牛客网暑期ACM多校训练营(第四场) A - Ternary String - [欧拉降幂公式][扩展欧拉定理]
题目链接:https://www.nowcoder.com/acm/contest/142/A 题目描述 A ternary string is a sequence of digits, where ...
- CodeForces - 1009B Minimum Ternary String
You are given a ternary string (it is a string which consists only of characters '0', '1' and '2'). ...
- 牛客网暑期ACM多校训练营(第四场):A Ternary String(欧拉降幂)
链接:牛客网暑期ACM多校训练营(第四场):A Ternary String 题意:给出一段数列 s,只包含 0.1.2 三种数.每秒在每个 2 后面会插入一个 1 ,每个 1 后面会插入一个 0,之 ...
- B. Minimum Ternary String (这个B有点狠)
B. Minimum Ternary String time limit per test 1 second memory limit per test 256 megabytes input sta ...
- codeforces ~ 1009 B Minimum Ternary String(超级恶心的思维题
http://codeforces.com/problemset/problem/1009/B B. Minimum Ternary String time limit per test 1 seco ...
随机推荐
- VBA对象模型
https://www.processon.com/view/link/5d974da6e4b07a0a4d4a098a
- 整理:WPF中Binding的几种写法
原文:整理:WPF中Binding的几种写法 目的:整理WPF中Bind的写法 <!--绑定到DataContext--> <Button Content="{Bindin ...
- powershell程序
powershell是一个命令行解释器.它输出一个字符,等待命令行的输入,然后执行这个命令.下面是powershell非常重要的命令:
- ansible模块command、shell、raw、script
简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...
- docker-compose进阶
笔者在前文<Docker Compose 简介>和<Dcoker Compose 原理>两篇文章中分别介绍了 docker compose 的基本概念以及实现原理.本文我们将继 ...
- 2019 头条java面试笔试总结 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条等公司offer,岗位是Java后端开发,因为发展原因最终选择去了头条,入职一年时间了,也成为了面试官,之前面 ...
- JS面向对象设计-理解对象
不同于其他面向对象语言(OO,Object-Oriented),JS的ECMAScript没有类的概念, 它把对象定义为"无序属性(基本值.对象.函数)的集合",类似于散列表. 每 ...
- 从 html 元素继承 box-sizing
在大多数情况下我们在设置元素的 border 和 padding 并不希望改变元素的 width,height值,这个时候我们就可以为该元素设置 box-sizing:border-box;. 我不希 ...
- Beego 学习笔记二:第一个项目
第一个MVC项目 1> 使用beego命令,创建一个项目 首先切换到创建项目的位置,输入bee new firstweb命令,创建成功之后会出现一个名为firstweb的文件夹 2> ...
- Web前端面试总结(别人的)
http://note.youdao.com/noteshare?id=0bfbe45de0de0bc4735f867e5a6c528f&sub=D52F5C079DDE49F99A5118D ...