Educational Codeforces Round 113 (Rated for Div. 2)
2024-09-06 15:42:01
多拿纸画画 ! ! !
题意
给出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;// 不输 赢一次
}
最新文章
- 使用Git Bash远程添加分支和简单部署你的静态页面
- HTTP原型
- jQuery MiniUI开发系列之:UI和数据分离
- linux 学习8 权限管理
- Java 元注解
- 训练集(train set) 验证集(validation set) 测试集(test set)
- c#学习之旅------01
- oschina git 私有项目使用。。
- EL表达式中如何截取字符串
- Linux内核中的中断
- C++文件读写总结
- CSS3重点总结
- 如何设计一个 iOS 控件?(iOS 控件完全解析)
- 【转向Javascript系列】深入理解Web Worker
- String与string的区别
- [LeetCode] Minimum Genetic Mutation 最小基因变化
- [Java]LeetCode138. 复制带随机指针的链表 | Copy List with Random Pointer
- Mysql添加字段.md
- 分分钟让你理解HTTPS
- 解决Python爬虫使用requests包控制台输出乱码问题
热门文章
- Oracle 11g中查询CPU占有率高的SQL
- zookeeper有几种部署模式? zookeeper 怎么保证主从节点的状态同步?
- 请说说你对Struts2的拦截器的理解?
- Oracle入门基础(五)一一多表查询
- Redis 的回收策略(淘汰策略)?
- 什么是 Callable 和 Future?
- springboot+shiro 02 - 异步ajax请求无权限时,返回json格式数据
- 数据库遇到的问题之“datetime设置默认为CURRENT_TIMESTAMP时报无效默认问题”和“时区问题”
- 制作任意波形发生器MAX038
- AWS 6R