70分求调 WA7,8,9

P10836 『FLA - I』歌静河

Mcfire05 @ 2024-08-03 20:04:40

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ll n,m;
    cin>>n>>m;
    string a,b;
    cin>>a>>b;
    ll j=1,tmp=0,ans=0;
    for(int i=0;i<n;i++){
        if(b[i]=='#'){
            tmp++;
        }
    }
    ans=tmp/26;
    tmp%=26;
    tmp++;
    for(int i=0;i<n;i++){
        if(j+96>122){
            j=1;
        }
        if(tmp+j>27 and a[i]=='#'){
            tmp=0;tmp--;
            a[i]='a';
            j=2;
        }
        if(ans>0 and a[i]=='#'){
            if(ans==0){
                j++;
            }
            a[i]='a';
            ans--;
        }else if(a[i]=='#'){
            a[i]=char(j+96);
            j++;
        }
    }
    cout<<a;
}

by liaocr @ 2024-08-03 20:44:45

@Mcfire05 正在看看出来一个问题 这应该是贪心 本来的情况j就是1 然后此时如果ans>0 它相当于白白用掉26个b的空位 这应该是一个问题

e 还有一个我不太清楚 就是你tmp%26之后+1是啥 我没看懂


by liaocr @ 2024-08-03 21:03:47

@Mcfire05 我调出来了 说一下

第一 你的ans其实没啥用 完全不用写 把下面删掉

ans=tmp/26;
tmp%=26;

第二 tmp不用+1所以这个也删掉

tmp++;

第三 把if里面条件要改 把and改&&(and不太好 以后建议都写&& )不用>27 改成>=27 还要另外加一个条件 具体看我发的第一条评论 tmp也不是设定为0 所以 for循环内改成如下

if(j+96>122){
  j=1;
}
if(tmp+j>=27 && a[i]=='#'&& j!=1 ){
  tmp -= (26-j);
  a[i]='a';
  j=2;
}else if(a[i]=='#'){
  a[i]=char(j+96);
  j++;
}

好的 改到这样就ok可以AC了 AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
    ll n,m;
    cin>>n>>m;
    string a,b;
    cin>>a>>b;
    ll j=1,tmp=0,ans=0;
    for(int i=0;i<n;i++){
        if(b[i]=='#'){
            tmp++;
        }
    }
    for(int i=0;i<n;i++){
        if(j+96>122){
            j=1;
        }
        if(tmp+j>=27 && a[i]=='#'&& j!=1 ){
            tmp -= (26-j);
            a[i]='a';
            j=2;
        }else if(a[i]=='#'){
            a[i]=char(j+96);
            j++;
        }
    }
    cout<<a;
}

by Mcfire05 @ 2024-08-03 21:37:05

@liaocr 谢谢


by Mcfire05 @ 2024-08-03 22:01:17

@liaocr 交了还是70分qwq


by liaocr @ 2024-08-03 22:21:10

@Mcfire05 sorry 我代码粘错了 正确代码

#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=2e5+5;
int n,m;
string s,t;
int num; //t 中 # 的数量 
int now;
int main(){
    cin.tie(0)->sync_with_stdio(0);
    cin>>n>>m;
    cin>>s>>t;
    for(int i=0;i<n;i++){
        if(t[i]=='#'){
            num++;
        }
    }
    if(num==0){ //若 t 中不含 # 
        for(int i=0;i<n;i++){
            if(s[i]=='#'){
                cout<<char(now+'a');
                now++; now%=26;
            }
            else{
                cout<<s[i];
            }
        }
        return 0;
    }
    if(num==m){
        cout<<s; return 0;
    }
    for(int i=0;i<n;i++){
        if(s[i]=='#'){
            if(num+now>=26&&now!=0){
                num-=(26-now);
                now = 1;
                cout<<"a";
            }
            else{
                cout<<char(now+'a');
                now++; 
                now%=26;

            }
        }
        else{
            cout<<s[i];
        }
    }
return 0;
}

by Mcfire05 @ 2024-08-03 22:24:32

@liaocr 谢谢qwq


by liaocr @ 2024-08-03 22:24:47

@Mcfire05 AC后如果可以点个关注吧 我最近都在帮人调调题啥的 顺便点个关注我要向朋友炫耀一下 你之后有不对的也可以私信我(尽量黄题及以下 之后的我就不太会了)


by Mcfire05 @ 2024-08-03 22:26:35

@liaocr ok


by AL__1S @ 2024-08-04 08:43:14

@Mcfire05
//TOTAL DSTRUCTION//


|