50分求调

P10836 『FLA - I』歌静河

bjqxszx_zhongqide @ 2024-08-07 21:56:31

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,al=0,bl=0,z=1;
    char a[100001],b[100001];
    cin>>n>>m>>a>>b;
    for(int i=0;i<n;i++){
        if(a[i]=='#'){
            al++;
        }
    }
    bl=m-al;
    if(bl<26){
        for(int i=0;i<n;i++){
            if(a[i]=='#'){
                a[i]='a'+z-1;
                z++;
            }
        }
    }else{
        for(int i=0;i<n;i++){
            if(z==1){
                if(a[i]=='#'){
                    a[i]='a';
                    z++;
                }
            }else if(bl>=26&&a[i]=='#'){
                    a[i]='a';
                    bl-=26;
            }else{
                if(a[i]=='#'){
                    a[i]='a'+z-1;
                    z++;
                }
            }
            z=(z-1)%26+1;
        }
    }
    cout<<a;
    return 0;
}

by XLoffy @ 2024-08-07 22:01:56

@bjqxszx_zhongqide 可以看看我的

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,pa[100005],pb[100005],k,cnt=0;
    string a,b;
    bool fa=0,fb=0;
    cin>>n>>m>>a>>b;
    for(int i=0;i<n;i++)
    {
        if(a[i]=='#') fa=1;
        if(b[i]=='#') 
        {
            fb=1;
            cnt++;
        }
    }
    if(fa==0) 
    {
        cout<<a;
        return 0;
    }
    k=m/26+1;
    cnt+=25;
    if(k<=1||fb==0)
    {
        char t='a';
        for(int i=0;i<n;i++)
        {
            if(a[i]=='#')
            {
                a[i]=t;
                if(t=='z') t='a';
                else t=char((int)t+1);
            }
        }
        cout<<a;
        return 0;
    }
    char t='b';
    for(int i=0;i<n;i++)
    {
        if(a[i]=='#')
        {
            if(k&&cnt>=25)
            {
                k--;
                cnt-=25;
                a[i]='a';
                continue;
            }
            a[i]=t;
            if(t==char(int('z')-cnt)) 
            {
                t='a';
                cnt=0; 
            }
            else if(t=='z') t='a';
            else t=char((int)t+1);
        }
    }
    cout<<a;
    return 0;
}

球一关QAQ


by ACcept_prince @ 2024-08-08 09:06:26

@bjqxszx_zhongqide 你也可以这么改

#include<bits/stdc++.h>
using namespace std;
int n,m,al,bl,z=1;
char a[100001],b[100001];
int main(){
    cin>>n>>m>>a>>b;
    for(int i=0;i<n;i++){
        if(b[i]=='#'){
            bl++;
        }
    }
    for(int i=0;i<n;i++){
        if(a[i]=='#'){
            a[i]=char((z-1)%26+'a');
            if(bl>=(26-z)){
                bl-=(26-z);
                z=1;
            }
            else{
                z++;
            } 
        }

    }
    cout<<a;
    return 0;
}

|