【数学不建模】赛程安排

你所在的年级有5个班,每班一支球队在同一块场地上进行单循环赛, 共要进行10场比赛. 如何安排赛程使对各队来说都尽量公平呢. 下面是随便安排的一个赛程: 记5支球队为A, B, C, D, E,在下表左半部分的右上三角的10个空格中, 随手填上1,2,10, 就得到一个赛程, 即第1场A对B, 第2场B对C, , 第10场C对E. 为方便起见将这些数字沿对角线对称地填入左下三角.
这个赛程的公平性如何呢, 不妨只看看各队每两场比赛中间得到的休整时间是否均等. 表的右半部分是各队每两场比赛间相隔的场次数, 显然这个赛程对A, E有利, 对D则不公平.

从上面的例子出发讨论以下问题:
1)对于5支球队的比赛, 给出一个各队每两场比赛中间都至少相隔一场的赛程.
2)当n支球队比赛时, 各队每两场比赛中间相隔的场次数的上限是多少.
3)在达到2) 的上限的条件下, 给出n=8, n=9的赛程, 并说明它们的编制过程.

问题一

在这里插入图片描述

问题二

偶数个球队:各队每两场比赛中间相隔的场次数的最小值的上限是 n 2 − 1 \dfrac{n}{2}-1 2n1
奇数个球队:各队每两场比赛中间相隔的场次数的最小值的上限是 n − 3 2 \dfrac{n-3}{2} 2n3
向下取整后,不分奇偶,都是 n − 3 2 \dfrac{n-3}{2} 2n3
式子来源: R ≤ ( n − 3 ) / 2 R\le (n-3)/2 R(n3)/2, R R R为间隔

问题三

编制过程:(暂不给予说明)

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 20;
int n,r,nx,mr;
vector<pair<int,int> >v(200);
vector<int>chose(200);//选择
int interval[N];//间隔
int ans[N][N];//答案矩阵//优化结构
map<pair<int,int>,int>mv;//对局->选择
int maxn[N];//当前球队比赛场次最大值(球队上次比赛的场次)void f(int);
inline void print_ans();int main(){ // n=12 运行时间突变cin >> n; // n个球队r = (n-3)/2;//间隔下线(下限)nx = (n-1)*n/2;//(n-1)+(n-2)+...+1//step1. 列出每一个对局(小数在前),并初始化对局int x = 1;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){v[x++] = make_pair(i,j);mv[{i,j}]=x-1;}}for(int i=1;i<=n;i++){interval[i] = -1;maxn[i] = -1;}//step2. 初始化选择if(n%2==0){mr = r+3;//间隔上限int k = 1;//12 34 ... n-1 nfor(int i=1;i<=n-1;i+=2){ans[i][i+1] = ans[i+1][i] = (i+1)/2;maxn[i]=maxn[i+1] = k;chose[k++]=mv[{i,i+1}];}for(int i=1;i<=n-5;i+=4){for(int j=0;j<2;j++){//ans[i+j][i+j+2] = ans[i+j+2][i+j] = k;ans[i+j][(i+j+2+n)%n] = ans[(i+j+2+n)%n][i+j] = k;maxn[i+j]=maxn[(i+j+2+n)%n] = k;chose[k++]=mv[{i+j,(i+j+2+n)%n}];}}f(k);}else{mr = r+2;//间隔上限int k = 1;//12 34 ... n-2 n-1for(int i=1;i<=n-2;i+=2){ans[i][i+1] = ans[i+1][i] = (i+1)/2;maxn[i]=maxn[i+1] = k;chose[k++]=mv[{i,i+1}];}f(k);}//print_ans();return 0;
}
bool flag = false;
void f(int x){if(flag || x == nx+1){if(!flag)print_ans();flag = true;//all return//cout ansreturn ;}//step3. 算间隔,取出必选(可选)的列表(对局列表)vector<int>must_chose;
#if 0for(int i=1;i<=r+1;i++){// x x-1 x-2 .. x-rpair<int,int> pi_t = v[chose[x-i]];interval[pi_t.first] = interval[pi_t.second] = i;}
#endifbool m_or_ke = false;//false 表示 是可选列表, 反之是必选vector<int>must_n;vector<int>no_n;for(int i=1;i<=n;i++){if(maxn[i]==-1){//没被选过must_n.push_back(i);continue;}if(m_or_ke){//必选已经出来了if(x-maxn[i]>mr)must_n.push_back(i);//直接加必选if(x-maxn[i]<=r)no_n.push_back(i);//不可选continue;}if(x-maxn[i]>mr){if(!m_or_ke)must_n.clear();m_or_ke = true;must_n.push_back(i);}else if(x-maxn[i]>r){must_n.push_back(i);}else{no_n.push_back(i);//不可选}}//预处理bool mn_[n+1];for(int i=1;i<=n;i++)mn_[i]=false;for(auto xx:must_n)mn_[xx]=true;for(auto xx:no_n)mn_[xx]=false;//must_n -> must_chose//for(int i=1;i<=nx;i++){//可优化//    if(mn_[v[i].first]&&mn_[v[i].second])must_chose.push_back(i);//}for(int i=1;i<=n;i++){//优化后if(!mn_[i])continue;for(int j=i+1;j<=n;j++){if(mn_[j]){must_chose.push_back(mv[{i,j}]);}}}int mi = must_chose.size();for(int i=0;i<mi;i++){//checkif(ans[v[must_chose[i]].first][v[must_chose[i]].second])continue;//chosechose[x] = must_chose[i];ans[v[must_chose[i]].first][v[must_chose[i]].second] = x;ans[v[must_chose[i]].second][v[must_chose[i]].first] = x;int vf_maxn = maxn[v[must_chose[i]].first];//备份int vs_maxn = maxn[v[must_chose[i]].second];maxn[v[must_chose[i]].first] = maxn[v[must_chose[i]].second] = x;f(x+1);//cut choseans[v[must_chose[i]].first][v[must_chose[i]].second] = 0;maxn[v[must_chose[i]].first] = vf_maxn;maxn[v[must_chose[i]].second] = vs_maxn;}
}
inline void print_ans(){for(int i=1;i<=n;i++){vector<int>v1;for(int j=1;j<=n;j++){cout << ans[i][j] << ' ';v1.push_back(ans[i][j]);}sort(v1.begin(),v1.end());cout << ',';for(int j=2;j<n;j++){cout << v1[j]-v1[j-1]-1 << ' ';}cout << '\n';}return ;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)cout << ans[i][j] << ' ';cout << '\n';}
}

代入n=9 / n=8答案可出

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

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

相关文章

上位机图像处理和嵌入式模块部署(f407 mcu vs f103)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于一部分嵌入式场景来说&#xff0c;f103其实已经足够了&#xff0c;特别是要求不高的低速场合。如果开发的代码比较多&#xff0c;还可以选用更…

黑马es集群

1、为什么要做es集群 单机的elasticsearch做数据存储&#xff0c;必然面临两个问题:海量数据存储问题、单点故障问题 海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard)&#xff0c;存储到多个节点 单点故障问题:将分片数据在不同节点备份(replica) 2、搭建es集群 1、用…

Python 数据库编程(Mysql)

目录 知识点 游标 提交事务 检索数据 回滚 关闭 增删改查 查询 新增 修改 删除 回滚的用法 知识点 游标 在Python中&#xff0c;数据库游标&#xff08;cursor&#xff09;是用于执行SQL语句并检索数据的对象。游标允许你在数据库中移动并操作数据。在使用Python进…

力扣Hot100-有效的括号(栈stack)

给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括…

【C++】哈希(2万字)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 unordered系列关联式容器 unordered_map unordered_map的文档介绍 unordered_map的接口说明 unordered_set 底层结构 哈希概念 哈希冲突 哈希函数 哈希…

Whisper-AT:抗噪语音识别模型(Whisper)实现通用音频事件标记(Audio Tagger)

1.概述: Whisper-AT 是建立在 Whisper 自动语音识别&#xff08;ASR&#xff09;模型基础上的一个模型。Whisper 模型使用了一个包含 68 万小时标注语音的大规模语料库进行训练&#xff0c;这些语料是在各种不同条件下录制的。Whisper 模型以其在现实背景噪音&#xff08;如音乐…

探究 Meme 的金融与社交属性

原文标题&#xff1a;《A Social and Financial Study of Memecoins》撰文&#xff1a;Andrew Hong编译&#xff1a;Chris&#xff0c;Techub News 每一个市场周期都伴随着 Meme 代币的出现。一群人围绕着某个 Meme 集结起来&#xff0c;暂时抬高了某个资产的价格&#xff08;从…

Github Copilot登录账号,完美支持chat

Github Copilot 代码补全等功能&#xff0c;提高写代码的效率 https://web.52shizhan.cn/activity/copilot 登录授权后&#xff0c;已经可以使用&#xff0c;完美。如图

大话设计模式学习笔记

目录 工厂模式策略模式备忘录模式&#xff08;快照模式&#xff09;代理模式单例模式迭代器模式访问者模式观察者模式解释器模式命令模式模板方法模式桥接模式适配器模式外观模式享元模式原型模式责任链模式中介者模式装饰模式状态模式 工厂模式 策略模式 核心&#xff1a;封装…

03.k8s常用的资源

3.k8s常用的资源 3.1 创建pod资源 k8s yaml的主要组成 apiVersion: v1 api版本 kind: pod 资源类型 metadata: 属性 spec: 详细上传nginx镜像文件&#xff0c;并且上传私有仓库里面 k8s_pod.yaml apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: we…

Tuxera Ntfs For Mac 2023的具体使用方法

大家都知道由于操作系统的原因&#xff0c;在苹果电脑上不能够读写NTFS磁盘&#xff0c;但是&#xff0c;今天小编带来的这款tuxera ntfs 2024 mac 破解版&#xff0c;完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件&#xff0c;能够实现苹果Mac OS X系统读写…

Docker的数据管理(数据卷+数据卷容器)

文章目录 一、Docker的数据管理1、概述2、主要的技术&#xff08;三种数据挂载方式&#xff09;2.1、数据卷&#xff08;Volumes&#xff09;2.2、绑定挂载&#xff08;Bind mounts&#xff09;2.3、tmpfs挂载&#xff08;Tmpfs mounts&#xff09;2.4、之间的关系&#xff08;…

示例丨医学、医药类查新点填写参考案例

根据《科技查新技术规范》GB/T 32003-2015&#xff0c;科学技术要点是必须要包含查新点内容的&#xff0c;而查新点就是科学技术要点中能够体现查新项目新颖性和技术进步的技术特征点。 在日常查新工作的接待中&#xff0c;我们发现医学、医药类查新合同上查新点的书写&#x…

计算机tcp/ip网络通信过程

目录 &#xff08;1&#xff09;同一网段两台计算机通信过程 &#xff08;2&#xff09;不同网段的两台计算机通信过程 &#xff08;3&#xff09;目的主机收到数据包后的解包过程 &#xff08;1&#xff09;同一网段两台计算机通信过程 如果两台计算机在同一个局域网中的同…

算法(九)希尔排序

文章目录 希尔排序简介代码实现 希尔排序简介 希尔排序&#xff08;shell sort&#xff09;选定一个小于N&#xff08;数列长度&#xff09;的整数gap作为第一增量&#xff0c;然后将所有距离为gap的元素分成一组&#xff0c;然后对每一组的元素进行插入排序。然后再取一个比前…

(1+X)Java程序设计高级(一)

Throwable&#xff1a;异常的基类&#xff0c;所有异常都继承自 java.lang.Throwable 类&#xff0c;Throwable 类有两个直接子类&#xff1a;Error 类和 Exception 类。Error&#xff1a;是 Java 应用程序本身无法恢复的严重错误&#xff0c;应用程序不需要捕获、处理这些严重…

7.1 Go 错误的概念

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【SQL每日一练】查询二进制树节点

文章目录 题目一、题析二、题解1.MySQL/SqlServer2.Oracle 题目 有一个表BST&#xff0c;其中包含两列&#xff1a;N和P&#xff0c;其中N表示二进制树中节点的值&#xff0c;P是N的父级。 编写一个查询&#xff0c;以查找按节点值排序的二进制树的节点类型。为每个节点输出以…

迅狐跨境电商系统源码:技术栈与多端集成

随着全球化贸易的不断深入&#xff0c;跨境电商系统源码成为了连接不同国家和地区消费者与商家的重要桥梁。本文将探讨跨境电商系统源码的技术栈以及如何通过多端集成来提升用户体验。 技术栈概览 跨境电商系统源码的技术栈是构建高效、稳定平台的基础。以下是构建跨境电商系…

OpenCV中的圆形标靶检测——背景概述

圆形标靶 如下图所示,相机标定中我们使用带有固定间距图案阵列的平板,来得到高精度的标靶像素坐标,进而计算得到相机的内参、畸变系数,相机之间的变换关系,和相机与世界坐标系的变换关系(即外参)。 不过标靶的形式多样,从图案类型来看常见的有棋盘格、圆形标靶…