贪心算法之: 田忌赛马

news/2025/12/5 20:00:38/文章来源:https://www.cnblogs.com/kkman2000/p/19313576

贪心算法:

1、 电池寿命 http://bailian.openjudge.cn/practice/3468

2、 建立雷达 http://bailian.openjudge.cn/practice/1328

3、 田忌赛马 http://bailian.openjudge.cn/practice/2287

“田忌赛马(Tian Ji — The Horse Racing)” 最优贪心算法 + 完整 C++ 代码

这个问题是典型的:

双指针 + 排序 + 贪心策略


🧠 题解思路(核心贪心策略)

田忌想最大化自己的收益(每赢一局 +200,每输一局 −200)。

将两人马匹速度都排序(从大到小):

  • t[i] = 田忌的马(降序)
  • k[j] = 国王的马(降序)

用三个指针:

指针 含义
tl 田忌最慢马的左指针(开始处)
tr 田忌最快马的右指针(末尾)
kl 国王最慢马
kr 国王最快马

贪心策略(最优策略)

对每一轮比较:

1. 如果田忌最快马 > 国王最快马

→ 直接赢!
tr--, kr--
收益 +200


2. 如果田忌最慢马 > 国王最慢马

→ 让慢马赢慢马
tl++, kl++
收益 +200


3. 否则田忌当前最慢马 < 国王最快马

→ 只能牺牲最慢马
tl++, kr--
收益 -200


该策略即官方题解的最优策略,在所有情况下都能保证最大收益。


完整 C++ 代码

#include <bits/stdc++.h>
using namespace std;int main() { int n;while (cin >> n && n) {vector<int> t(n), k(n);for (int i = 0; i < n; i++) cin >> t[i];for (int i = 0; i < n; i++) cin >> k[i];sort(t.begin(), t.end(), greater<int>());sort(k.begin(), k.end(), greater<int>());int tl = 0, tr = n - 1;int kl = 0, kr = n - 1;int score = 0;while (tl <= tr) {if (t[tl] > k[kl]) {// 田忌最快 > 国王最快 → 赢score += 200;tl++;kl++;} else if (t[tr] > k[kr]) {// 田忌最慢 > 国王最慢 → 也赢score += 200;tr--;kr--;} else {// 不管怎样都赢不了 → 牺牲最慢马if (t[tr] < k[kl])score -= 200;  // 输tr--;kl++;}}cout << score << "\n";}return 0;
}

📌 样例测试

输入:

3
92 83 71
95 87 74
2
20 20
20 20
2
20 19
22 18
0

输出:

200
0
0

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

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

相关文章

laya给自己画边框

laya给自己画边框laya给自己画边框this.graphics.drawRect(0,0,this.width,this.height, "#ccff00", "#ff0000", 2)this.graphics.strokeText(id + "", 30, 0, "", "#ff…

小游戏联机服务开发实践:从零构建房间匹配与帧同步系统

一、小游戏平台联机服务现状分析 在探索小游戏开发领域时,我发现一个有趣的现象:各大小游戏平台的联机服务支持程度差异显著。 如,微信小游戏官方提供了完整的房间匹配与帧同步服务,而抖音小游戏则暂未提供类似功能…

Object类

1.toString() 在一般的javabean类(也就是实体类)里面,可以重写toString方法(alt + insert),使得打印对应对象时,直接打印出对象的信息,而不是对象地址

Владимир

[vlɐˈdʲimʲɪr]。 кэн нот билив, ивэн гоцзииньбяо из олсо лэтин.

HTML--------------动态列表

<!DOCTYPE html> <html><head><meta charset="utf-8"><title>我的书籍收藏</title><style>.ok{color:green;font-size:14px;/*粗体*/font-weight:bold;}.no{colo…

VSCode使用Jupyter完整指南配备机器学习环境

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”

1. 检查 php.ini 配置文件目标:确认是否已启用 sqlite3 扩展。 操作步骤:找到 PHP 的配置文件 php.ini。可以通过以下命令快速定位:php --ini或者在 PHP 文件中运行以下代码查看路径:<?php phpinfo(); ?>打…

PbootCMS登录失败:数据库目录写入权限不足!

如果登录失败,提示 数据库目录权限写入不足 ,可以操作设置数据库目录权限为 777 一般默认模板数据库在 data 目录下,所以给 data 目录设置权限 777 即可,设置后刷新页面重试扫码添加技术【解决问题】专注网站运营、…

为了让 EEG 模型对不同人、不同时间都准确,要做到:

为了让 EEG 模型对不同人、不同时间都准确,要做到: 信号标准化(最重要) 提取稳定特征(CSP / CNN / Transformer) 域适应(让不同人特征对齐) 迁移学习(从大模型迁到小数据) 数据增强(让模型更稳健

二十四宿想象气功

二十四宿想象气功 平静下来,我们想象宇宙中的三垣二十四宿的图像,想象这些图像进入我们的身体,想象存在一种粒子可以穿透宇宙星空,进入的身体。想象整个星空由三垣二十四宿构成。同时,想象有四象青龙,白虎,朱雀…

京剧:金玉奴【定场诗】

京剧:金玉奴 【定场诗】 青春正二八 生长在贫家 绿窗春寂静 空负貌如花

pbootcms后台公司信息的内容如何调用到前台页面上

使用公司信息标签 PbootCMS 提供了专门的标签来调用后台填写的公司信息。你可以直接在模板文件中使用这些标签。例如:html<div><p>公司名称:{pboot:companyname}</p><p>公司地址:{pboot:co…

南京大学 AI 导论 Cart-Pole V1 游戏(强化学习)

2025.01.25 目的:阐述 DQN 算法原理 Q-learning 算法:

Korean

in theory, theres no real English can speak Korean, not to mention writing them out.

Day56(26)-F:\vs_ai_work\vue-tlias-management\vue-tlias-management\src\views\layout\index.vue

ElementPlusDefaultPrimarySuccessInfoWarningDanger<div class="button-row"><el-button plain>Plain</el-button><el-button type="primary" plain>Primary</el-but…

AI Agent 设计原则与最佳实践

Agent 设计准则 三大准则:透明:让用户感知 Agent 的存在,以及其行为 可控:用户可以设置 agent的偏好,并对 Agent 进行指令,以及监控其行为 一致性:Agent 行为保持一致,避免用户对 Agent 行为产生困惑透明性设计…

全网热议!2025年重庆全屋定制厂家销量推荐榜单

在2025年,重庆的全屋定制木质家具市场备受关注。我们对多家厂家的销售数据和消费者口碑进行了深入分析,以便为您提供一个值得参考的推荐榜单。通过多维度的评估,包括设计创新、生产工艺、环保材料及售后服务,确保您…

深入解析:HiTooler File Finder: macOS上速度碾压Spotlight,媲美Windows上「Everything」的文件搜索神器

深入解析:HiTooler File Finder: macOS上速度碾压Spotlight,媲美Windows上「Everything」的文件搜索神器pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display:…