Educational Codeforces Round 113 (Rated for Div. 2) B. Chess Tournament(思维 构造)

简介: Educational Codeforces Round 113 (Rated for Div. 2) B. Chess Tournament(思维 构造)

linkk

题意:

n个人,每个人都要与其他人比赛;

a i = 1:所有的比赛都不能输(只能平局或赢)

a i = 2 :所有的比赛至少赢得一场

思路:

对于a i = 1的人来说,可以将他和其他人的比赛都构造成平局

对于a i = 2的人来说,只需要把这些人单独记录下来,每次让他赢得他的下一个人,也就是输给上一个人,这样就能保证赢一局。

要注意如果a i = 1 ∣ ∣ 2的时候,说明无论如何也赢不了,应该输出N O

代码:

int a[110];
char s[110][110];
int main(){
  int _=read;
  while(_--){
    int n=read,cnt=0;
    vector<int>v;
    map<int,int>mp;
    for(int i=1;i<=n;i++){
      scanf("%1d",&a[i]);
      if(a[i]==1) cnt++,mp[i]=1;
      else v.push_back(i);
    }
    if(v.size()==2||v.size()==1){
      puts("NO");continue;
    } 
    puts("YES");
    int idx=0,m=v.size();
    for(int i=1;i<=n;i++){
      if(a[i]==1){//如果这个人不能输
        for(int j=1;j<=n;j++){
          if(i==j) cout<<"X";
          else cout<<"=";//所有的都输出平局
          if(j==n) puts("");
        }
      }
      else{
        for(int j=1;j<=n;j++){
          if(i==j) cout<<"X";
          else if(a[j]==1) cout<<"=";//和不能输的人比,都是平局
          else if((v[(idx+1)%m])==j) cout<<"+";//一直都是赢下一个
          else if(v[(idx-1+m)%m]==j) cout<<"-";//输给上一个
          else cout<<"=";//其余都是平局
          if(j==n) puts(""),idx++;
        }
      }
    }
  }
  return 0;
}
目录
相关文章
|
算法 C# 数据库
【干货】一份10万字免费的C#/.NET/.NET Core面试宝典
C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集(这一部分会标注来源)和社区小伙伴提供三部分组成。该份基础面试宝典完全免费,发布两年来收获了广大.NET小伙伴的好评,我会持续更新和改进,欢迎关注我的公众号【追逐时光者】第一时间获取最新更新的面试题内容。
626 1
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
1724 1
|
小程序
微信小程序如何实现进入小程序自动连WiFi功能
微信小程序如何实现进入小程序自动连WiFi功能
692 0
|
文字识别 网络协议 Unix
嵌入式中dhcp服务环境搭建
嵌入式中dhcp服务环境搭建
790 0
|
Java 数据安全/隐私保护 Spring
新一代开源配置中心 - Apollo
Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。
28352 0
|
数据可视化 C# Python
C#基于ScottPlot进行可视化
C#基于ScottPlot进行可视化
307 1
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
802 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
缓存 前端开发 Java
springboot 的单体服务 字典参数转译
本文介绍了如何在Spring Boot项目中使用缓存来管理字典参数,并确保前后端数据一致性。首先,通过`@EnableCaching`启用缓存功能,接着创建一个自定义的字典缓存类`DicCache`。然后,通过配置类将`DicCache`添加到`cacheManager`中。此外,对字典服务进行改造,使用`@CachePut`和`@CacheEvict`注解保证数据一致性。最后,实现自定义注解`@DicSerializer`和序列化处理类`DictSerializerHandel`,用于在序列化过程中自动转换字典值。通过这种方式,可最小化代码改动并提高系统性能。
482 6
springboot 的单体服务 字典参数转译
|
人工智能 算法 BI
【调和级数 并集查找】1627. 带阈值的图连通性
【调和级数 并集查找】1627. 带阈值的图连通性
|
存储 SQL Cloud Native
一文教会你使用强大的ClickHouse物化视图
在现实世界中,数据不仅需要存储,还需要处理。处理通常在应用程序端完成。但是,有些关键的处理点可以转移到ClickHouse,以提高数据的性能和可管理性。ClickHouse中最强大的工具之一就是物化视图。在这篇文章中,我们将探秘物化视图以及它们如何完成加速查询以及数据转换、过滤和路由等任务。 如果您想了解更多关于物化视图的信息,我们后续会提供一个免费的培训课程。
29236 10
一文教会你使用强大的ClickHouse物化视图

热门文章

最新文章