zoukankan      html  css  js  c++  java
  • [暴力]JZOJ 5817 抄代码

    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 个字符。

    分析

    搞个类似出度的数组就能AC,细节较多

    然后有反例可以轻易hack掉AC代码:

    1

    abcdefghijklmnopqrstuvwxyz

    zyxwvutsrqponmlkjihgfedcba

    不过貌似数据非常水,题解也是这种可以被hack掉的代码,所以= =

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <memory.h>
    using namespace std;
    char s1[1101],s2[1101];
    int len1,len2;
    bool b[27];
    int d[27][27];
    int t;
    
    int main() {
        freopen("copycat.in","r",stdin);
        freopen("copycat.out","w",stdout);
        scanf("%d
    ",&t);
        while (t--) {
            len1=len2=0;
            char c;
            do {
                scanf("%c",&c);
                s1[len1++]=c;
            }
            while (c!='
    '&&c!='
    ');
            len1--;
            do {
                scanf("%c",&c);
                s2[len2++]=c;
            }
            while (c!='
    '&&c!='
    ');
            len2--;
            if (len1!=len2) {
                printf("0
    ");
                continue;
            }
            memset(b,0,sizeof b);memset(d,0,sizeof d);
            bool p=1;
            for (int i=0;i<len1;i++) {
                if ('a'<=s1[i]&&s1[i]<='z') {
                    if ('a'>s2[i]||s2[i]>'z') {
                        printf("0
    ");
                        p=0;
                        break;
                    }
                    if (s1[i]==s2[i]) continue;
                    if (b[s1[i]-'a']&&!d[s1[i]-'a'][s2[i]-'a']) {
                        printf("0
    ");
                        p=0;
                        break;
                    }
                    b[s1[i]-'a']=d[s1[i]-'a'][s2[i]-'a']=1;
                }
                else {
                    if ('a'<=s2[i]&&s2[i]<='z') {
                        printf("0
    ");
                        p=0;
                        break;
                    }
                    if (s1[i]!=s2[i]) {
                        printf("0
    ");
                        p=0;
                        break;
                    }
                }
            }
            if (p) printf("1
    ");
        }
        fclose(stdin);fclose(stdout);
    }
    View Code
    在日渐沉没的世界里,我发现了你。
  • 相关阅读:
    104每日博客
    924每日博客
    921每日博客
    928每日博客
    929每日博客
    930每日博客
    927每日博客
    大志非才不就,大才非学不成—我的博文资源汇总
    vue 项目搭建
    Vant 使用记录
  • 原文地址:https://www.cnblogs.com/mastervan/p/9483871.html
Copyright © 2011-2022 走看看