• ARC115


    A
    (quad)首先确定两个人正确个数相同相同存在于去掉选择相同的题目之后如果剩下题目个数为偶数。
    (quad)反而反之,为奇数个则不同。
    (quad)因为存在传递性,即和A和B相同,B和C相同则A和C相同,故可分成两类然后直接乘。

    code

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<climits>
    #include<sstream>
    #include<fstream>
    using namespace std;
    #define int long long
    
    const int N = 1e5 + 10;
    
    int n , m;
    
    inline bool same(string a , string b)
    {
        bool ans = 1;
        for(register int i = 0 ; i < m ; i++)
        {
            if(a[i] != b[i])
            {
                ans ^= 1;
            }
        }
        return ans;
    }
    
    string c;
    
    signed main()
    {
        ios::sync_with_stdio(false);
        cin >> n >> m;
        int f1 = 0 , f2 = 0;
        for(register int i = 1 ; i <= m ; i++)
        {
            c += "0";
        }
        for(register int i = 1 ; i <= n ; i++)
        {
            string s;
            cin >> s;
            if(same(s , c))
            {
                f1++;
            }
            else
            {
                f2++;
            }
        }
        cout << f1 * f2;
        return 0;
    }
    

    B
    (quad)首先我们可以通过行列来判断A和B是否自相矛盾,顺便得到(A_i,B_i)(A_1,B_1)的相对数量关系。
    (quad)我们再将A,B分别加上它们中的最小负值的绝对值(如果没有则不加),这样就构造出了初步的数列。
    (quad)最后我们算出此时(A_1+B_1)(C_{1,1})的差值,如果为负也不行,然后再随便找A或者B加上这个差值,输出即可。

    code

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<climits>
    #include<sstream>
    #include<fstream>
    using namespace std;
    
    const int N = 510;
    
    int c[N][N];
    
    int a[N];
    int b[N];
    
    signed main()
    {
        int n;
        cin >> n;
        for(register int i = 1 ; i <= n ; i++)
        {
            for(register int j = 1 ; j <= n ; j++)
            {
                cin >> c[i][j];
            }
        }
        if(n == 1)
        {
            cout << "Yes" << endl;
            cout << 0 << endl << c[1][1];
            return 0;
        }
        bool A = 1;
        for(register int i = 2 ; i <= n ; i++)
        {
            a[i] = c[1][i] - c[1][1];
        }
        for(register int i = 2 ; i <= n ; i++)
        {
            for(register int j = 2 ; j <= n ; j++)
            {
                if(c[i][j] - c[i][1] != a[j])
                {
                    A = 0;
                }
            }
        }
        if(A == 0)
        {
            cout << "No";
            return 0;
        }
        bool B = 1;
        for(register int i = 2 ; i <= n ; i++)
        {
            b[i] = c[i][1] - c[1][1];
        }
        for(register int i = 2 ; i <= n ; i++)
        {
            for(register int j = 2 ; j <= n ; j++)
            {
                if(c[j][i] - c[1][i] != b[j])
                {
                    B = 0;
                }
            }
        }
        if(B == 0)
        {
            cout << "No";
            return 0;
        }
        int mina = INT_MAX , minb = INT_MAX;
        for(register int i = 1 ; i <= n ; i++)
        {
            mina = min(mina , a[i]);
            minb = min(minb , b[i]);
        }
        if(mina < 0)
        {
            mina = -mina;
        }
        else
        {
            mina = 0;
        }
        if(minb < 0)
        {
            minb = -minb;
        }
        else
        {
            minb = 0;
        }
        for(register int i = 1 ; i <= n ; i++)
        {
            a[i] += mina;
            b[i] += minb;
        }
        if(a[1] + b[1] > c[1][1])
        {
            cout << "No";
            return 0;
        }
        int d = c[1][1] - (a[1] + b[1]);
        for(register int i = 1 ; i <= n ; i++)
        {
            a[i] += d;
        }
        cout << "Yes" << endl;
        for(register int i = 1 ; i <= n ; i++)
        {
            cout << b[i] << " ";
        }
        cout << endl;
        for(register int i = 1 ; i <= n ; i++)
        {
            cout << a[i] << " ";
        }
        return 0;
    }
    

    C
    (quad)类似埃氏筛法的东西,每次遇到相同的就加一,正确性性然,具体看代码。

    code

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cmath>
    #include<ctime>
    #include<climits>
    #include<sstream>
    #include<fstream>
    using namespace std;
    
    const int N = 1e5 + 10;
    
    int a[N];
    
    signed main()
    {
        ios::sync_with_stdio(false);
        int n;
        cin >> n;
        for(register int i = 1 ; i <= n ; i++)
        {
            a[i] = 1;
        }
        for(register int i = 1 ; i <= n ; i++)
        {
            for(register int j = i + i ; j <= n ; j += i)
            {
                if(a[j] == a[i])
                {
                    a[j]++;
                }
            }
        }
        for(register int i = 1 ; i <= n ; i++)
        {
            cout << a[i] << " ";
        }
        return 0;
    }
    
    $——byquad wanwanjiuhao7744$
  • 相关阅读:
    【技巧】断点调试你的express项目
    day39-Spring 18-Spring的JDBC模板:查询的操作
    day39-Spring 17-Spring的JDBC模板:完成增删改的操作
    day39-Spring 16-Spring的JDBC模板:设置参数到属性文件
    day39-Spring 15-Spring的JDBC模板:C3P0连接池配置
    day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
    day39-Spring 13-Spring的JDBC模板:默认连接池的配置
    day39-Spring 12-Spring的JDBC模板:快速入门
    day39-Spring 11-Spring的AOP:基于AspectJ的XML配置方式
    day39 10-Spring的AOP:基于AspectJ的切点定义
  • 原文地址:https://www.cnblogs.com/wanwanjiuhao7744/p/15091730.html
Copyright © 2020-2023  润新知