大模拟 Major

题目来源:2025 Wuhan University of Technology Programming Contest

比赛链接:Dashboard - 2025 Wuhan University of Technology Programming Contest - Codeforces

题目大意:

模拟 16 支队伍的瑞士轮比赛结果,规则太多,直接上题面吧。

Solution:

依题意模拟,将每一轮胜负场次相同的队伍放进一个 vector 里,按照规则排序。

总之就是很暴力。。。

不过好在这题打起来并没有看上去那么复杂,规划好每个子函数的功能,思路还是非常清晰的,很快就能码完。

(其实代码可以更短,但为了体现每一步清楚的思路,多打一点也没什么,模拟题就是要求稳)

Code:

#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;int win[20][20],race[20][20],vis[20],b[10];vector<int> t1,t2,t3;struct Team
{int winned,losed,sum;vector<int> rival;
}a[20];void battle(int x,int y)
{race[x][y] = race[y][x] = 1;if(win[x][y]) ++ a[x].winned,++ a[y].losed;else ++ a[x].losed,++ a[y].winned;a[x].rival.push_back(y);a[y].rival.push_back(x);return;
}void calc()
{for (int i = 1;i <= 16;++ i){int tmp = 0;for (auto j : a[i].rival)tmp += a[j].winned - a[j].losed;a[i].sum = tmp;}return;
}int cmp(int x,int y)
{if(a[x].sum == a[y].sum) return x < y;else return a[x].sum > a[y].sum;
}void round1()
{for (int i = 1;i <= 8;++ i) battle(i,i + 8);t1.clear();t2.clear();for (int i = 1;i <= 16;++ i)if(a[i].winned == 1) t1.push_back(i);else t2.push_back(i);calc();sort(t1.begin(),t1.end(),cmp);sort(t2.begin(),t2.end(),cmp);return;
}void round2()
{memset(vis,0,sizeof vis);for (auto i : t1){if(vis[i]) continue;for (auto it = t1.rbegin();it != t1.rend();++ it){int j = *it;if(vis[j]) continue;if(race[i][j]) continue;battle(i,j);vis[i] = vis[j] = 1;break;}}    for (auto i : t2){if(vis[i]) continue;for (auto it = t2.rbegin();it != t2.rend();++ it){int j = *it;if(vis[j]) continue;if(race[i][j]) continue;battle(i,j);vis[i] = vis[j] = 1;break;}}t1.clear();t2.clear();t3.clear();for (int i = 1;i <= 16;++ i)if(a[i].winned == 2) t1.push_back(i);else if(a[i].winned == 1) t2.push_back(i);else t3.push_back(i);calc();sort(t1.begin(),t1.end(),cmp);sort(t2.begin(),t2.end(),cmp);sort(t3.begin(),t3.end(),cmp);return;
}void round3()
{memset(vis,0,sizeof vis);for (auto i : t1){if(vis[i]) continue;for (auto it = t1.rbegin();it != t1.rend();++ it){int j = *it;if(vis[j]) continue;if(race[i][j]) continue;battle(i,j);vis[i] = vis[j] = 1;break;}}    for (auto i : t2){if(vis[i]) continue;for (auto it = t2.rbegin();it != t2.rend();++ it){int j = *it;if(vis[j]) continue;if(race[i][j]) continue;battle(i,j);vis[i] = vis[j] = 1;break;}}for (auto i : t3){if(vis[i]) continue;for (auto it = t3.rbegin();it != t3.rend();++ it){int j = *it;if(vis[j]) continue;if(race[i][j]) continue;battle(i,j);vis[i] = vis[j] = 1;break;}}t1.clear();t2.clear();t3.clear();for (int i = 1;i <= 16;++ i)if(a[i].winned == 2 && a[i].losed == 1) t1.push_back(i);else if(a[i].winned == 1 && a[i].losed == 2) t2.push_back(i);calc();sort(t1.begin(),t1.end(),cmp);sort(t2.begin(),t2.end(),cmp);return;
}void run()
{int flag = 0;if(!race[b[1]][b[6]] && !race[b[2]][b[5]] && !race[b[3]][b[4]])battle(b[1],b[6]),battle(b[2],b[5]),battle(b[3],b[4]),flag = 1;if(flag) return;if(!race[b[1]][b[6]] && !race[b[2]][b[4]] && !race[b[3]][b[5]])battle(b[1],b[6]),battle(b[2],b[4]),battle(b[3],b[5]),flag = 1;if(flag) return;if(!race[b[1]][b[5]] && !race[b[2]][b[6]] && !race[b[3]][b[4]])battle(b[1],b[5]),battle(b[2],b[6]),battle(b[3],b[4]),flag = 1;if(flag) return;if(!race[b[1]][b[5]] && !race[b[2]][b[4]] && !race[b[3]][b[6]])battle(b[1],b[5]),battle(b[2],b[4]),battle(b[3],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[4]] && !race[b[2]][b[6]] && !race[b[3]][b[5]])battle(b[1],b[4]),battle(b[2],b[6]),battle(b[3],b[5]),flag = 1;if(flag) return;if(!race[b[1]][b[4]] && !race[b[2]][b[5]] && !race[b[3]][b[6]])battle(b[1],b[4]),battle(b[2],b[5]),battle(b[3],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[6]] && !race[b[2]][b[3]] && !race[b[4]][b[5]])battle(b[1],b[6]),battle(b[2],b[3]),battle(b[4],b[5]),flag = 1;if(flag) return;if(!race[b[1]][b[5]] && !race[b[2]][b[3]] && !race[b[4]][b[6]])battle(b[1],b[5]),battle(b[2],b[3]),battle(b[4],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[3]] && !race[b[2]][b[6]] && !race[b[4]][b[5]])battle(b[1],b[3]),battle(b[2],b[6]),battle(b[4],b[5]),flag = 1;if(flag) return;if(!race[b[1]][b[3]] && !race[b[2]][b[5]] && !race[b[4]][b[6]])battle(b[1],b[3]),battle(b[2],b[5]),battle(b[4],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[4]] && !race[b[2]][b[3]] && !race[b[5]][b[6]])battle(b[1],b[4]),battle(b[2],b[3]),battle(b[5],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[3]] && !race[b[2]][b[4]] && !race[b[5]][b[6]])battle(b[1],b[3]),battle(b[2],b[4]),battle(b[5],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[2]] && !race[b[3]][b[6]] && !race[b[4]][b[5]])battle(b[1],b[2]),battle(b[3],b[6]),battle(b[4],b[5]),flag = 1;if(flag) return;if(!race[b[1]][b[2]] && !race[b[3]][b[5]] && !race[b[4]][b[6]])battle(b[1],b[2]),battle(b[3],b[5]),battle(b[4],b[6]),flag = 1;if(flag) return;if(!race[b[1]][b[2]] && !race[b[3]][b[4]] && !race[b[5]][b[6]])battle(b[1],b[2]),battle(b[3],b[4]),battle(b[5],b[6]),flag = 1;if(flag) return;
}void round4()
{memset(b,0,sizeof b);int cnt = 0;for (auto i : t1) b[++ cnt] = i;run();memset(b,0,sizeof b);cnt = 0;for (auto i : t2) b[++ cnt] = i;run();t1.clear();for (int i = 1;i <= 16;++ i)if(a[i].winned == 2 && a[i].losed == 2) t1.push_back(i);calc();sort(t1.begin(),t1.end(),cmp);return;
}void round5()
{memset(b,0,sizeof b);int cnt = 0;for (auto i : t1) b[++ cnt] = i;run();return;
}int main()
{for (int i = 1;i <= 15;++ i)for (int j = 1,op;j <= 16 - i;++ j)scanf("%d",&op),win[i][i + j] = op , win[i + j][i] = op ^ 1;round1();round2();round3();round4();round5();for (int i = 1;i <= 16;++ i) printf("%d %d\n",a[i].winned,a[i].losed);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93603.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【手撕JAVA多线程】1.从设计初衷去看JAVA的线程操作

目录 前言 概述 主动阻塞/唤醒 代码示例 实现 为什么必须在同步块中使用 计时等待是如何实现的 被动阻塞/唤醒 为什么要有被动阻塞/唤醒 实现&#xff08;锁升级&#xff09; 前言 JAVA多线程相关的内容很多很杂&#xff0c;但工作中用到的频率不高&#xff0c;用到…

UE5多人MOBA+GAS 46、制作龙卷风技能

文章目录创建龙卷风GA创建蒙太奇创捷一系列GE添加数据表添加到角色中创建龙卷风GA GA_Tornado 添加标签 // 龙卷风冷却CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Tornado_Cooldown)// 通用技能伤害CRUNCH_API UE_DECLARE_GAMEPLAY_TAG_EXTERN(Ability_Generic_Dama…

如何在ubuntu下安装libgpiod库

以下是关于如何在ubuntu下安装libgpiod库的两种安装方式以及遇到ubuntu存在多个工具链导致编译失败的解决方法。如果想要自由选择使用不同版本的libgpiod&#xff0c;可以选择手动编译安装方式&#xff0c;系统安装默认1.6.3版本(ubuntu22.04)。手动编译安装1、在github上下载要…

qt vs2019编译QXlsx

1、安装ActivePerl2、打开pro文件&#xff0c;直接编译即可第一个简单实例&#xff1a;#include "xlsxcellrange.h" #include "xlsxchart.h" #include "xlsxchartsheet.h" #include "xlsxdocument.h" #include "xlsxrichstring.h…

计算机存储器分类和层次结构详解

存储器是计算机系统的核心部件之一&#xff0c;其核心功能是存储程序&#xff08;指令&#xff09;和数据&#xff0c;是冯诺依曼体系结构“存储程序”概念的物质基础。它直接关系到计算机系统的性能、容量和成本。 存储器核心内容总览表分类维度存储器层级技术实现速度容量成本…

通过rss订阅小红书,程序员将小红书同步到自己的github主页

title: 通过rss订阅小红书&#xff0c;程序员将小红书同步到自己的github主页 tags: 个人成长 categories:杂谈最近在做一些新的尝试&#xff0c;把文本的内容转化为漫画和图片&#xff0c;方便大众阅读&#xff0c;恰好小红书很适合分发这些内容&#xff0c;于是我开通了小红书…

麒麟KylinOS V10-SP3 安装FastGPT

1. 操作系统环境CPU&#xff1a;20核 Xeon(R) Platinum 8457C 内存&#xff1a;64GB GPU&#xff1a;4090 操作系统&#xff1a;KylinOS-V10-SP32. 安装docker、docker-compose、fastgpt下载安装docker、docker-compose1. 下载docker docker 下载地址&#xff1a; https://do…

前端/在vscode中创建Vue3项目

Contenthtml input元素添加css样式使用js添加交互按钮点击提示输入框字符计数使用 npm 来管理项目包安装 Node.js初始化项目安装依赖包创建一个基于 Vite 的 Vue 项目创建项目进入项目目录安装依赖调用代码格式化工具启动开发服务器在浏览器中访问html input元素 <input ty…

HiSmartPerf使用WIFI方式连接Android机显示当前设备0.0.0.0无法ping通!设备和电脑连接同一网络,将设备保持亮屏重新尝试

在使用HiSmartPerf使用WIFI方式连接Android机时&#xff0c;如果出现无法ping通0.0.0.0的情况&#xff0c;可以尝试以下步骤解决问题&#xff1a;问了一下AI&#xff0c;给出的解答如下&#xff1a; 检查网络连接 &#xff1a;确保设备和电脑连接到同一局域网的Wi-Fi。可以在手…

SpringWeb是什么东西?

SpringWeb是个什么东西&#xff1f;SpringWeb是一个Java开发Web项目时的Web层框架。所谓Web层&#xff0c;就是直接和用户打交道的框架&#xff0c;用户(User)也就是顾客&#xff0c;顾客就是上帝&#xff0c;我们说是Web项目&#xff0c;通常也就是说B/S架构的项目&#xff0c…

docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理

docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理 一、环境介绍 二、基础环境安装 1、优化系统参数 2、安装docker 3、创建容器网络 4、安装测试容器(可选) 三、安装nginx 1、拉取镜像 2、创建映射目录 3、准备默认配置文件 4、证书文件准备 5、启动nginx容器…

自动驾驶中安全相关机器学习功能的可靠性定义方法

摘要当前标准无法涵盖高自动化驾驶中基于机器学习功能的安全需求。由于神经网络的不透明性&#xff0c;一些自动驾驶功能无法按照 V 模型进行开发。这些功能需要对标准进行扩展。本文聚焦这一空白&#xff0c;为这类功能定义了功能可靠性&#xff0c;以帮助未来的标准控制基于机…

css实现圆角+边框渐变+背景半透明

ui小姐姐经常搞一些花里胡哨的东西&#xff0c;圆角边框渐变背景半透明&#xff0c;虽然每个都可以弄&#xff0c;但是合在一起真的不好弄&#xff0c;主要是因为通过border–image设置的边框渐变&#xff0c;无法使用圆角&#xff0c;下面是自己搜索整理的一些可以的方案。 方…

tree组件(几种不同分叉树Vue3)

效果图&#xff1a; 基础树组件&#xff08;本人博客里面有&#xff09; https://blog.csdn.net/xfy991127/article/details/140346861?spm1001.2014.3001.5501 下面是工作需求改造后 父组件 <template><div class"go-JJTree" id"tree-scroll&quo…

百度智能云x中科大脑:「城市智能体」如何让城市更会思考

近日&#xff0c;2025中关村论坛系列活动——中关村人工智能与未来城市论坛在中关村国家自主创新示范区展示中心举办。论坛上&#xff0c;发布了应用范式创新升级成果、智能体产品、可信数据空间成果等。 中科大脑联合百度智能云等伙伴共同打造并发布21个智能体产品&#xff0c…

在职老D渗透日记day16:sqli-labs靶场通关(第24关)二次注入 sqlmap自动注入没跑出来。。。

5.24.2.sqlmap自动注入第一个&#xff1a;登录页面&#xff08;1&#xff09;pb抓取http头POST /sqli-labs/Less-24/login.php HTTP/1.1 Host: 192.168.10.106 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0 Accept: text/ht…

Fanuc机器人EtherCAT通讯配置详解

1、EtherCAT简介EtherCAT&#xff0c;这一基于以太网的现场总线系统&#xff0c;以其开放架构和高速性能著称。CAT代表的是控制自动化技术&#xff08;Control Automation Technology&#xff09;的缩写&#xff0c;彰显了其在工业自动化领域的核心地位。作为确定性的工业以太网…

超酷炫的Three.js示例

今天写一个超级酷炫的Three.js示例&#xff0c;以下是文件源代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-sca…

从零开始大模型之实现GPT模型

从零开始大模型之从头实现GPT模型1.大语言模型整体架构2 大语言的Transformer模块2.1 层归一化2.2 GELU激活函数2.3 前馈神经网络2.4 快捷连接3 附录3.1 anacondapython环境搭建1.数据预处理&#xff1a;原始数据进行词元化&#xff0c;以及通过&#xff0c;依据词汇表生成ID编…

[1Prompt1Story] 滑动窗口机制 | 图像生成管线 | VAE变分自编码器 | UNet去噪神经网络

链接&#xff1a;https://github.com/byliutao/1Prompt1Story 这个项目是一个基于单个提示生成一致文本到图像的模型。它在ICLR 2025会议上获得了聚焦论文的地位。该项目提供了生成一致图像的代码、Gradio演示代码以及基准测试代码。 主要功能点: 使用单个提示生成一致的文本…