codeforces 1102D Balanced Ternary String(贪心+思维)

https://codeforces.com/contest/1102/problem/D

主要是满足字典序最小的时候。

 

#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;

int main(){
    char s[300005];
    int n,sum[3];
    while(~scanf("%d",&n)){
        scanf("%s",s);
        sum[0] = 0,sum[1] = 0,sum[2] = 0;
        for(int i=0;i=0;i--){
            if(sum[s[i]-'0']>n/3){
                for(int j=2;j>=1;j--){
                    if(sum[j]=0;i--){
            if(sum[s[i]-'0']>n/3){
                for(int j=2;j>=2;j--){
                    if(sum[j]n/3){
                    for(int j=0;j<=1;j++){
                    if(sum[j]n/3){
             for(int i=0;i=0;i--){
                if(s[i] == '0')
                {
                    s[i]='1';
                    sum[1]++;
                    sum[0]--;
                }
                if(sum[1] == n/3)
                    break;
             }
        }
        else//当2足,0不足的时候,顺着放01就好了
        {
            for(int i=0;in/3){
                for(int j=0;j<=1;j++){
                    if(sum[j]

 

  

 

转载于:https://www.cnblogs.com/LLLAIH/p/10900729.html

你可能感兴趣的:(codeforces 1102D Balanced Ternary String(贪心+思维))