zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 113 (Rated for Div. 2)

    多拿纸画画 ! ! !

    Problem - B - Codeforces

    题意

    给出n个数字(数字为1或2), 1代表这第i个选手没有输过,  2代表这第i个选手至少赢一次

    输出为n*n矩阵( i行j列) ,   +表示 i 赢了j,   -表示 i 对j输了,   =表示ij平局,   X表示i=j

    题解

    1表示这个选手没输过, 那就全是=或+, 但是我们还要尽量保证别的是1的选手没输过, 即:

    是1的选手统统默认是=

    其实1有多少没什么关系, 如图,

    对于2, 像这种, 可以让3vs4   4vs5    5vs3, 前者赢. 如3赢了2, (3,2)为+, (2,3)为- , 一对

    占两格而对于样例22这种, 只有2个空格, 至少有1个2没有赢过, 对于样例2这种, 只有0个

    空格更离谱了, 直接输出NO

    AC代码

    #include <string>
    #include <iostream>// 不输   赢一次
    #include <vector>
    using namespace std;
    
    string a, s[60];
    bool book[60][60];
    
    int main()
    {
        int t;
        cin >> t;
        bool flag = 1,f;
        while(t --)
        {
            vector<int> id;
            int n;
            cin >> n >> a;
            
            for(int i = 0; i < n; i ++)
            {
                s[i] = string(n, '=');
                s[i][i] = 'X';
                if(a[i] == '2')    id.push_back(i);
            }
            
            if(id.size() <= 2 && id.size() > 0)
            {
                puts("NO");
                continue;
            }
            
            for(int i = 0; i <  id.size(); i ++)
            {
                if(i+1 == id.size())
                    s[id[i]][id[0]] = '+', s[id[0]][id[i]] = '-';
                else
                    s[id[i]][id[i+1]] = '+', s[id[i+1]][id[i]] = '-';
            }
            puts("YES");
            for(int i = 0; i < n;i ++)
                cout << s[i] << endl;
            
        }
        return 0;// 不输   赢一次
    }
  • 相关阅读:
    c如何弹出保存路径/保存文件对话框
    c++ 读写txt方法
    windows获取环境变量
    Block UI 获取treelist column值
    MFC中如何弹出选择文件/文件夹对话框(C++)
    What can change the CID of a NX license server?
    spring之AOP
    spring注解开发
    spring配置Bean
    spring之IOC和DI实现
  • 原文地址:https://www.cnblogs.com/la-la-wanf/p/15248833.html
Copyright © 2011-2022 走看看