【數學不建模】賽程安排

你所在的年級有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 2n??1
奇數個球隊:各隊每兩場比賽中間相隔的場次數的最小值的上限是 n ? 3 2 \dfrac{n-3}{2} 2n?3?
向下取整后,不分奇偶,都是 n ? 3 2 \dfrac{n-3}{2} 2n?3?
式子來源: R ≤ ( n ? 3 ) / 2 R\le (n-3)/2 R(n?3)/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.pswp.cn/bicheng/19565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19565.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【機器學習】之 K-最近鄰(KNN)算法原理及實現

K-最近鄰&#xff08;K-Nearest Neighbors, KNN&#xff09;是一種簡單且直觀的監督學習算法&#xff0c;廣泛應用于分類和回歸任務。本文將介紹KNN算法的基本概念、實現細節以及Python代碼示例。 基本概念 KNN算法的核心思想是&#xff1a;給定一個測試樣本&#xff0c;根據…

上位機圖像處理和嵌入式模塊部署(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進…

請說明Vue的filter的理解與用法

Vue.js 的 filter 是一種特殊的功能&#xff0c;允許你在mustache插值 ({{ }}) 或 v-bind 表達式中預處理文本。然而&#xff0c;需要注意的是&#xff0c;從 Vue 2.x 開始&#xff0c;filter 已被標記為廢棄&#xff0c;并且在 Vue 3.x 中已完全移除。盡管如此&#xff0c;了解…

力扣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;完美。如圖

flutter 自動生成靜態資源的引用

flutter_gen庫的使用 第一步、項目yarml中dev_dependencies 新增一下flutter_gen_runner 和build_runner dev_dependencies:build_runner: nullflutter_gen_runner: null # flutter packages pub run build_runner build 第二步、新增配置信息 和(dev_dependencies 同級的) …

大話設計模式學習筆記

目錄 工廠模式策略模式備忘錄模式&#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…

prometheus 標簽選擇器 正則表達式 = 、=~

Prometheus expression是一種用于查詢和操作Prometheus時間序列數據的查詢語言。它具有一套豐富的函數和運算符&#xff0c;可以用于提取、聚合和轉換時間序列數據。 正則表達式在Prometheus expresion中也被廣泛使用&#xff0c;可以用于匹配和過濾時間序列。 Prometheus ex…

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

大家都知道由于操作系統的原因&#xff0c;在蘋果電腦上不能夠讀寫NTFS磁盤&#xff0c;但是&#xff0c;今天小編帶來的這款tuxera ntfs 2024 mac 破解版&#xff0c;完美的解決了這個問題。這是一款在macOS平臺上使用的磁盤讀寫軟件&#xff0c;能夠實現蘋果Mac OS X系統讀寫…

CSS實驗性功能及CSS4特性

CSS4目前仍然是一個寬泛的概念,因為CSS的發展通常是通過一系列逐步完善的模塊來進行的,而不是一次性推出一個全新的“第四代”。許多所謂的“CSS4”特性實際上是正在開發或已經草案階段的CSS模塊,它們可能在未來的CSS規范中被正式采納。 選擇器4: :is() 和 :where() 偽類允…

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;同一網段兩臺計算機通信過程 如果兩臺計算機在同一個局域網中的同…