【字符串大模拟】潜伏者—— NOIP2009原题

洛谷连接

就一道黄题没啥可以说的……就是要细心……

学到了神奇的优化

    ios::sync_with_stdio(false);

cin优化,能跑的比scanf快!棒!(不过要开std)

这题真的还挺简单……就是多灾多难的,错在了各种奇奇怪怪的地方,最后洛谷还不能提交

经验教训之

  1. 字符串的输出不要花里胡哨的,老老实实用cin,加个优化比啥都强
  2. 读题不要光读题,对着题目多考虑考虑,不然总能被小细节绕进去
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char s1[1001],s2[1001],s3[1001];
int f[300],f2[300],len1,len2,len3;
int main()
{
    ios::sync_with_stdio(false);
    cin>>s1>>s2>>s3;
    len1=strlen(s1); len2=strlen(s2);
    if (len1<26) 
    {
        cout<<"Failed";
        return 0;
    }
    memset(f,-1,sizeof(f));
    memset(f2,-1,sizeof(f2));
    for (int i=0; i<len1; i++)
    {
        if ((f[s1[i]-'A']!=-1||f2[s2[i]-'A']!=-1)&&f2[s2[i]-'A']!=s1[i]-'A') 
            {
                cout<<"Failed";
                return 0;
            }
        if (f[s1[i]-'A']==-1) 
        {
            f[s1[i]-'A']=s2[i]-'A';
            f2[s2[i]-'A']=s1[i]-'A';
        }
    }
    for (int i=0; i<26; i++)
    if (f[i]==-1)
    {
        cout<<"Failed";
        return 0;
    }
    len3=strlen(s3);
    for (int i=0; i<len3; i++)
    {
        char c=f[s3[i]-'A']+'A';
        cout<<c;
    }
    return 0;
}

 2019CSP-S RP+++

あぃがと

原文地址:https://www.cnblogs.com/Phantomhive/p/11829073.html