• [JZOJ5817] 【NOIP提高A组模拟2018.8.15】 抄代码


    Description

    J 君是机房的红太阳,每次模拟她总是 AK 虐场。然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君代码的嫌疑,原因是考试时 C 君正好 坐在 J 君旁边。于是组委会需要你帮她们鉴定一下 C 君是否抄了 J 君的代码。 NOIP2117 一共有 T 道题,每道题需要提交一份阿语言代码 (阿语言是 NOIP2117 的唯一可 用编程语言)。 一份阿语言代码只有一行,仅由小写字母,数字,空格和分号组成。 组委会认为,如果 C 君的代码可以由 J 君的代码经过若干次修改变量名操作得到,C 君就 抄了 J 君的代码。 一次修改变量名操作被定义为将代码中的所有小写字母 x 替换为小写字母 y(此处 x, y 代指 任意小写字母)。 请你告诉组委会,对于每道题,C 君是否抄了 J 君的代码。

    Input

    第一行一个正整数 T。 接下来 2T 行,第 2i 行代表 J 君对于第 i 道题的提交代码,第 2i + 1 行代表 C 君对于第 i 道题的提交代码。 

    Output

    输出 T 行,如果对于第 i 道题,C 君抄了 J 君的代码,请在第 i 行输出1,否则请在第 i 行 输出0。 

    Sample Input

    5
    int x;
    int y;
    double a;
    double aa;
    float 1
    float 2
    string s;
    double d;
    print thisismycode;
    float tooooooooooo;

    Sample Output

    1
    0
    0
    1
    1

    Data Constraint

    10% 的数据满足代码中不包含字母。
    另外 30% 的数据满足代码中只包含字母。
    100% 的数据满足 T≤ 1000,每行代码中不会包含超过 1000 个字符。

    这甚至比B组的题还水, 直接用map模拟一遍。

    长度不一样直接返回0,一个是数字一个是字母返回0.

    其他的用map判断一下。

    复杂度O(TNlogN);


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <string>
    #include <map>
    using namespace std;
    inline int read() {
        int res=0;char ch=getchar();
        while(!isdigit(ch))ch=getchar();
        while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48), ch=getchar();
        return res;
    }
    #define reg register
    int T;
    map <char, char> mp;
    
    int main()
    {
      freopen("copycat.in", "r", stdin);
      freopen("copycat.out", "w", stdout);
        T = read();
        while(T--)
        {
            mp.clear();
            string a, b;
            getline(cin, a);getline(cin, b);
            int la = a.length(), lb = b.length();
            if (la != lb) {puts("0");continue;}
            for (reg int i = 0 ; i < la ; i ++)
            {
                if (a[i] == b[i]) continue;
                if (a[i] < 'a' or a[i] > 'z' or b[i] < 'a' or b[i] > 'z') 
                    if (a[i] != b[i]) {puts("0");goto End;}
                if (!mp[a[i]]) mp[a[i]] = b[i];
                else if (mp[a[i]] != b[i]) {puts("0");goto End;}
            }
            puts("1");
            End:;
        }
        return 0;
    }
  • 相关阅读:
    理解一下策略模式,工厂模式
    Java函数的传参机制
    Git删除分支/恢复分支
    常用的http网页错误代码表---------495引发的一个简单到爆,但基于国内环境只能呵呵呵的血案
    mysql explain用法和结果的含义
    mysql explain 的extra中using index ,using where,using index condition,using index & using where理解
    索引之单列索引和组合索引
    Jasperreport5.6.9-----2
    oracle 修改数据精度问题
    安装程序遇到错误0x80240037
  • 原文地址:https://www.cnblogs.com/BriMon/p/9483442.html
Copyright © 2020-2023  润新知