首页/新闻资讯/正文详情

田忌赛马c++

发布时间:2026/11/3 12:08:30 来源:云帆数科 栏目:资讯中心
田忌赛马c++
hello今天我们又见面了✌话不多说开始吧题目描述田忌和齐王各有 n 匹马每匹马都有一个整数速度值。一次比赛恰好进行 n 局每一局双方各派出一匹尚未出场的马因此每匹马都恰好出场一次。如果田忌的马速度更快田忌获得 200 银币如果两匹马速度相同本局收益为 0如果齐王的马速度更快田忌失去 200 银币。田忌知道双方所有马的速度并可以重新安排自己的出场顺序。等价地他可以在两组马之间选择一种一一配对。请计算田忌能够获得的最大总收益。输入包含若干组比赛数据。输入格式每组数据的第一行包含一个正整数 n表示双方各有 n 匹马。第二行包含 n 个整数表示田忌的马的速度。第三行包含 n 个整数表示齐王的马的速度。所有数据之后有一行单独的整数 0表示输入结束。这个 0 不是一组比赛数据。输出格式对于每组数据输出一行一个整数表示田忌最多能获得多少银币。输入样例 13 92 83 71 95 87 74 0输出样例 1200样例说明田忌可以让速度为 92 的马战胜速度为 87 的马让速度为 83 的马战胜速度为 74 的马再让速度为 71 的马输给速度为 95 的马。总收益为 200200−200200。数据范围对于每组比赛数据1≤n≤2000每匹马的速度均为 0 到 100 的整数。数据特征表中每一行表示对于前 x% 的测试数据该行列出的条件同时成立。#includebits/stdc.h using namespace std; int n,a[2005],b[2005],ans; int main(){ while(1){ ans0; cinn; if(n0)return 0; for(int i1; in; i) cina[i]; for(int i1; in; i) cinb[i]; sort(a1,a1n); sort(b1,b1n); int x11,x21,d1n,d2n; while(x1d1){ if(a[d1]b[d2]){ ans; d1--; d2--; } else{ if(a[x1]b[x2])ans,x1,x2; else if(a[x1]b[d2])x1,d2--; else ans--,x1,d2--; } } coutans*200endl; } return 0; }题解题意与数学模型对每组数据田忌和齐王各有 nn 匹马每匹马都必须恰好出场一次。田忌可以重排自己的出场顺序因此一个合法方案等价于在两组马之间建立一个一一配对。设田忌的速度为 a1,…,ana1​,…,an​齐王的速度为 b1,…,bnb1​,…,bn​。定义一局的单位收益为w(x,y) \begin{cases} 1,xy,\\ 0,xy,\\ -1,xy.b_r$让双方最快马比赛田忌得到 $200$。 2. 否则若 $a_lb_l$让双方最慢马比赛田忌得到 $200$。 3. 否则让田忌最慢马 $a_l$ 对阵齐王最快马 $b_r$。若 $a_lb_r$田忌失去b_r$则 $a_r$ 能战胜齐王所有尚未使用的马。考虑任意一个最优配对设其中 $a_r$ 与 $b_j$ 配对而 $b_r$ 与 $a_i$ 配对。 把这两对改成 $(a_r,b_r)$ 和 $(a_i,b_j)$。前后 $a_r$ 都获胜又因为 $b_j\le b_r$同一匹 $a_i$ 对阵更慢的 $b_j$ 时结果不会比对阵 $b_r$ 更差。交换不会降低总收益所以第一种选择安全。 ### 最慢马可以取胜时 若第一种情况不成立而 $a_lb_l$那么齐王最慢马 $b_l$ 会输给田忌所有尚未使用的马。设某个最优配对中 $b_l$ 与 $a_i$ 配对而 $a_l$ 与 $b_j$ 配对。 交换为 $(a_l,b_l)$ 和 $(a_i,b_j)$ 后对 $b_l$ 的胜局仍然保留。由于 $a_i\ge a_l$用 $a_i$ 代替 $a_l$ 对阵同一匹 $b_j$结果也不会变差。因此第二种选择同样可以出现在某个最优解中。 ### 其余情况可以牺牲最慢马 进入第三种情况时同时有 $a_r\le b_r$ 和 $a_l\le b_l$。田忌最慢马不可能战胜任何尚未使用的齐王马而齐王最快马也不可能被任何田忌马战胜。 在某个最优配对中设 $a_l$ 与 $b_j$ 配对$b_r$ 与 $a_i$ 配对。若 $a_lb_j$那么a_l$则交换后 $a_i$ 能战胜 $b_j$新增的胜局足以补偿 $a_l$ 从平局变成失败。若 $a_lb_r$由排序关系可知所有剩余速度都相同任意配对都为平局。 因此第三种选择也不会排除所有最优解。 三个分支都能确定一对属于某个最优解的马。删去该对后剩余数组仍然有序且问题形式不变。对剩余马匹数量归纳可知算法得到的总收益就是全局最大收益。 ## 实现细节 - 四个指针分别指向两个有序数组的左右端点每轮恰好删除双方各一匹马。 - 第三个分支只有在 $a_l

相关推荐

网盘直链下载助手实测指南:9 大网盘免客户端拿直链,从安装到排错
网盘直链下载助手实测指南:9 大网盘免客户端拿直链,从安装到排错

网盘直链下载助手实测指南:9 大网盘免客户端拿直链,从安装到排错 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 … · 2026/11/1 1:38:19

Sandboxie SbieDll.dll 崩溃排查:从注入失败到钩子崩溃的完整定位流程
Sandboxie SbieDll.dll 崩溃排查:从注入失败到钩子崩溃的完整定位流程

Sandboxie SbieDll.dll 崩溃排查:从注入失败到钩子崩溃的完整定位流程 【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie Sandboxie 靠 SbieDll.dll 注入进程、拦截并重定向文件与注册表调用… · 2026/11/1 1:38:19

SuperMimic运动参考库详解: LAFAN1重采样、跟踪刚体FK与K帧目标编码的完整指南
SuperMimic运动参考库详解: LAFAN1重采样、跟踪刚体FK与K帧目标编码的完整指南

【免费下载链接】supermimic_vibed vibe coded supermimic within 1h, LAFAN passed within 1.5 gpuh training 项目地址: https://gitcode.com/gh_mirrors/su/supermimic_vibed 点击查看 免费下载 SuperMimic 是一个在 Isaac Lab 3(kit-less MuJoCo-W… · 2026/11/2 20:18:49

AI编程正在重走PLC的路:从梯形图到自然语言,PLC工程师如何用AI提效
AI编程正在重走PLC的路:从梯形图到自然语言,PLC工程师如何用AI提效

1. 从一条产线改造的吐槽说起上个月帮一个做非标自动化的老朋友看项目,他接了个小活儿:给一条老旧的包装线做电控升级。原来的方案是西门子S7-200 SMART加触摸屏,程序是前几年外包写的,梯形图里全是M点、T定时器堆出来的顺启逆停逻… · 2026/11/3 12:08:18

生物化学要点:从糖类结构到糖代谢三条通路的系统梳理
生物化学要点:从糖类结构到糖代谢三条通路的系统梳理

简介:面向生物化学初学者与备考学生的要点归纳文档,围绕学科概念、研究对象、发展简史及糖类等基础内容进行梳理,帮助读者快速建立知识框架并抓住复习重点。压缩包共1个doc文件,约426KB,体量轻便,适合在电脑… · 2026/11/3 12:08:18

i9-12900与i7-12700真实性能差异:混合架构下的调度、缓存与扩展能力解析
i9-12900与i7-12700真实性能差异:混合架构下的调度、缓存与扩展能力解析

1. 项目概述:这不是参数表对比,而是真实装机场景下的决策逻辑“i9-12900和i7-12700区别”——这个标题每天在硬件论坛、装机群、二手交易页面被反复敲打,但绝大多数人点进去看到的,是一张冷冰冰的CPU天梯图截图,或是某… · 2026/11/3 12:08:18

热词“buzz”走红:语义拆解、内容应用与追热避坑指南
热词“buzz”走红:语义拆解、内容应用与追热避坑指南

1. 一个英语单词,怎么突然就成了互联网新热的“buzz”不知道你们最近刷短视频有没有同感——评论区、标题、口播里开始密集冒出“buzz”这个词。一开始我以为又是哪个游戏角色的外号,后来发现不对劲,它在各种毫不相关的场景里反复出现&#x… · 2026/11/3 12:08:18

RTD2718Q-VD-CG 4K144驱动板规格书解读与点屏调试避坑
RTD2718Q-VD-CG 4K144驱动板规格书解读与点屏调试避坑

简介:这份PDF规格书面向显示器、一体机与嵌入式显示方案的硬件工程师及驱动开发人员,系统梳理Realtek RTD2718Q-VD-CG多功能显示控制器的整体架构、功能特性与接口参数,可用于芯片选型、方案设计和调试对照。文档重点说明DisplayPort 1.4与HD… · 2026/11/3 12:08:18

Claude Code与MiniMax-M2.7:高效代码生成工具实战指南
Claude Code与MiniMax-M2.7:高效代码生成工具实战指南

1. Claude Code 与 MiniMax-M2.7 模型概述 Claude Code 是一个基于 Node.js 的代码生成与辅助工具,它通过 API 调用云端大模型来提供代码补全、错误修复和智能建议等功能。MiniMax-M2.7 则是 Claude Code 支持的一个轻量级但性能优异的代码生成模型,特别… · 2026/11/3 12:07:16

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码