多拿纸画画 ! ! !

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;// 不输 赢一次
}

最新文章

  1. 使用Git Bash远程添加分支和简单部署你的静态页面
  2. HTTP原型
  3. jQuery MiniUI开发系列之:UI和数据分离
  4. linux 学习8 权限管理
  5. Java 元注解
  6. 训练集(train set) 验证集(validation set) 测试集(test set)
  7. c#学习之旅------01
  8. oschina git 私有项目使用。。
  9. EL表达式中如何截取字符串
  10. Linux内核中的中断
  11. C++文件读写总结
  12. CSS3重点总结
  13. 如何设计一个 iOS 控件?(iOS 控件完全解析)
  14. 【转向Javascript系列】深入理解Web Worker
  15. String与string的区别
  16. [LeetCode] Minimum Genetic Mutation 最小基因变化
  17. [Java]LeetCode138. 复制带随机指针的链表 | Copy List with Random Pointer
  18. Mysql添加字段.md
  19. 分分钟让你理解HTTPS
  20. 解决Python爬虫使用requests包控制台输出乱码问题

热门文章

  1. Oracle 11g中查询CPU占有率高的SQL
  2. zookeeper有几种部署模式? zookeeper 怎么保证主从节点的状态同步?
  3. 请说说你对Struts2的拦截器的理解?
  4. Oracle入门基础(五)一一多表查询
  5. Redis 的回收策略(淘汰策略)?
  6. 什么是 Callable 和 Future?
  7. springboot+shiro 02 - 异步ajax请求无权限时,返回json格式数据
  8. 数据库遇到的问题之“datetime设置默认为CURRENT_TIMESTAMP时报无效默认问题”和“时区问题”
  9. 制作任意波形发生器MAX038
  10. AWS 6R