QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#843532#9079. Hamming Distance1903331632AC ✓1ms3768kbC++232.7kb2025-01-04 20:04:122025-01-04 20:04:19

Judging History

This is the latest submission verdict.

  • [2025-01-04 20:04:19]
  • Judged
  • Verdict: AC
  • Time: 1ms
  • Memory: 3768kb
  • [2025-01-04 20:04:12]
  • Submitted

answer

#include <bits/stdc++.h>
#define Lnnnb return 0;
#define ll long long
#define endl '\n'
#define mem(a) memset(a, 0, sizeof(a))
#define maxn 1010101

using namespace std;
ll n, ttt, dif[maxn];
string a, b;
void scan()
{
    cin >> a;
    cin >> b;
    a = " " + a;
    b = " " + b;
}

void solve()
{
    ll dnt = 0, lval = 0, rval = 0;
    string s((int)a.size(), ' ');
    n = a.size();
    for (ll i = 1; i <= n; ++i)
    {
        if (a[i] == b[i])
            s[i] = 'a';
        else
        {
            dif[++dnt] = i;
        }
    }
    for (ll iii = 1; iii <= dnt; ++iii)
    {
        ll x = dif[iii];
        if (a[x] != 'a' && b[x] != 'a')
        {
            if (abs(lval - rval) <= dnt - iii)
            {
                s[x] = 'a';
            }
            else
            {
                if (lval >= rval)
                {
                    s[x] = a[x];
                    rval++;
                }
                else
                {
                    s[x] = b[x];
                    lval++;
                }
            }
        }
        else
        {
            a[x] == 'a' ? rval++ : lval++;
            if (abs(lval - rval) <= dnt - iii)
            { /// 只要差值<=剩下的不同的
                s[x] = 'a';
            }
            else
            {
                a[x] == 'a' ? rval-- : lval--; /// 先不取a

                if (abs(lval - rval) == dnt - iii)
                { /// 保持不变
                    if (a[x] != 'b' && b[x] != 'b')
                    {
                        s[x] = 'b';
                    }
                    else
                    {
                        if (lval > rval && a[x] == 'b')
                            s[x] = 'b', rval++;
                        else if (lval < rval && b[x] == 'b')
                            s[x] = 'b', lval++;
                        else
                            s[x] = 'c';
                    }
                }
                else
                { /// 差太大了
                    if (lval >= rval)
                    {
                        s[x] = a[x];
                        rval++;
                    }
                    else
                    {
                        s[x] = b[x];
                        lval++;
                    }
                }
            }
        }
    }
    s.erase(s.begin());
    cout << "Case " << ttt << ": " << s;
}
int main()
{
    ios::sync_with_stdio(false);
    /// cin.tie(0);cout.tie(0);
    ll t = 1;
    cin >> t;
    for (ttt = 1; ttt <= t; ++ttt)
    {
        scan();
        solve();
        if (ttt != t)
            cout << endl;
    }
    Lnnnb
}

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 3580kb

input:

2
abc
acd
abandon
newyork

output:

Case 1: aaa
Case 2: aaaaark

result:

ok 6 tokens

Test #2:

score: 0
Accepted
time: 0ms
memory: 3768kb

input:

3
abcbacjasiodjadosasadasdada
abcbacjasiodjadosasadasdada
aba
abb
bbbbbbaaaaa
aaaaaabbbbb

output:

Case 1: aaaaaaaaaaaaaaaaaaaaaaaaaaa
Case 2: aac
Case 3: aaaaabaaaac

result:

ok 9 tokens

Test #3:

score: 0
Accepted
time: 0ms
memory: 3420kb

input:

1
aab
bba

output:

Case 1: abc

result:

ok 3 tokens

Test #4:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

1
aaaea
ccbdc

output:

Case 1: aabac

result:

ok 3 tokens

Test #5:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

100
y
m
tbqyaxbi
pqdqdayk
vdgccwsfo
wjgrckffn
hhka
bwqz
zcleuatejof
txpvaqmidwg
wbbl
fcuj
rfgjo
wfluk
ivimfoedco
lstisjtzfv
bhllf
puyfh
swuyfbufmz
swuyfbufmz
wvocvzngafbvnkfkbrcut
ldoxqnikmdtodzzzzmchs
lsfjwmjhszqiqhmwcrsaftrzvebgwhydynoiotqhqkrqhgxxuf
crvapaebmmxljfiiuoiiomnxhwwxgpulltbdwflgxgpezgc...

output:

Case 1: a
Case 2: aaaaaaaa
Case 3: aaaaaaaaa
Case 4: aaab
Case 5: aaaaaaaaaaa
Case 6: aaaa
Case 7: aaaaa
Case 8: aaaaaaaaaa
Case 9: aaaaa
Case 10: aaaaaaaaaa
Case 11: aaaaaaaaaaaaaaaaaaaas
Case 12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaua
Case 13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxj
...

result:

ok 300 tokens

Extra Test:

score: 0
Extra Test Passed