ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

2023-11-16


HDOJ题目地址:传送门

Tian Ji -- The Horse Racing

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 25520    Accepted Submission(s): 7506


Problem Description
Here is a famous story in Chinese history.

"That was about 2300 years ago. General Tian Ji was a high official in the country Qi. He likes to play horse racing with the king and others."

"Both of Tian and the king have three horses in different classes, namely, regular, plus, and super. The rule is to have three rounds in a match; each of the horses must be used in one round. The winner of a single round takes two hundred silver dollars from the loser."

"Being the most powerful man in the country, the king has so nice horses that in each class his horse is better than Tian's. As a result, each time the king takes six hundred silver dollars from Tian."

"Tian Ji was not happy about that, until he met Sun Bin, one of the most famous generals in Chinese history. Using a little trick due to Sun, Tian Ji brought home two hundred silver dollars and such a grace in the next match."

"It was a rather simple trick. Using his regular class horse race against the super class from the king, they will certainly lose that round. But then his plus beat the king's regular, and his super beat the king's plus. What a simple trick. And how do you think of Tian Ji, the high ranked official in China?"



Were Tian Ji lives in nowadays, he will certainly laugh at himself. Even more, were he sitting in the ACM contest right now, he may discover that the horse racing problem can be simply viewed as finding the maximum matching in a bipartite graph. Draw Tian's horses on one side, and the king's horses on the other. Whenever one of Tian's horses can beat one from the king, we draw an edge between them, meaning we wish to establish this pair. Then, the problem of winning as many rounds as possible is just to find the maximum matching in this graph. If there are ties, the problem becomes more complicated, he needs to assign weights 0, 1, or -1 to all the possible edges, and find a maximum weighted perfect matching...

However, the horse racing problem is a very special case of bipartite matching. The graph is decided by the speed of the horses --- a vertex of higher speed always beat a vertex of lower speed. In this case, the weighted bipartite matching algorithm is a too advanced tool to deal with the problem.

In this problem, you are asked to write a program to solve this special case of matching problem.
 

Input
The input consists of up to 50 test cases. Each case starts with a positive integer n (n <= 1000) on the first line, which is the number of horses on each side. The next n integers on the second line are the speeds of Tian’s horses. Then the next n integers on the third line are the speeds of the king’s horses. The input ends with a line that has a single 0 after the last test case.
 

Output
For each input case, output a line containing a single number, which is the maximum money Tian Ji will get, in silver dollars.
 

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

Sample Output
  
  
200 0 0


题解:贪心算法(这里便是列举出了所有最优解得情况):
每次取田忌的最快的马与齐王最快的马比较,有三种情况。
一、田忌最快的马比齐王最快的快,那么直接用田忌最快的马去赢齐王最快的马。
二、田忌最快的马比齐王最快的慢,那么用田忌最慢的马去输齐王最快的马。
三、田忌最快的马与齐王最快的马速度一样。
先用田忌最慢的马与齐王最慢的马比较。
若田忌比齐王快,直接赢掉齐王最慢的马。
否则田忌最慢的马再去与齐王最快的马比较如果最快最慢的马都一样,则忽略掉钱的变化。

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int a[1005],b[1005];
int main(){
    int n;
    while(cin>>n&&n){
        for(int i=0; i<n; i++)
            cin>>a[i];
        for(int i=0; i<n; i++)
            cin>>b[i];
        sort(a,a+n);
        sort(b,b+n);
        int s=0;
        for(int i=0,j=0,k=n-1,l=n-1; i<=k;){
            //如果田忌速度最慢的马比齐王速度最慢的要快,直接赢
            if(a[i]>b[j])s++,i++,j++;
            //如果田忌的速度最快的马比齐王速度最快的要快,直接赢
            else if(a[k]>b[l])s++,k--,l--;
            else{
                //用田忌速度最慢的和齐王速度最快的马比较,如果小于就直接输
                if(a[i]<b[l])s--;
                i++,l--;
            }
        }
        cout<<s*200<<endl;
    }
    return 0;
}





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing 的相关文章

  • 【刷题】华为笔试面试机考 [HJ29] - 字符串加解密

    题目地址 点击跳转 题目描述 1 对输入的字符串进行加解密 并输出 2 加密方法为 当内容是英文字母时则用该英文字母的后一个字母替换 同时字母变换大小写 如字母a时则替换为B 字母Z时则替换为a 当内容是数字时则把该数字加1 如0替换1 1
  • POJ-3253 Fence Repair

    农夫约翰想修理牧场周围的一小段围栏 他测量围栏并认定他需要 1 20000 厚木板 每一个都具有一些整数长度大号我 1 大号我 50000 单元 然后 他购买一块长板足够长 以便看到N块板 即 其长度是长度L i的总和 FJ忽略了 切口 锯
  • hdu 6181 Two Paths

    Problem acm hdu edu cn showproblem php pid 6181 Reference Dijkstra应用之次短路 2017 Multi University Training Contest 10 1011
  • 贪心——字典序最小问题

    https vjudge net problem POJ 3617 题目简单理解就是 给定长度为N的字符串为S 要构造一个长度为N的字符串T 起初 T 是一个空串 随后反复进行下列任意操作 从S的头部删除一个字符串 加到T的尾部 从S的尾部
  • 货仓选址(贪心)

    我之前在多篇博客中提到货仓选址 却发现从未仔细介绍过货舱选址 今天就来好好说一下货舱选址这个问题 就以这个图来说 我们假设Ap 1 gt x gt Ap 那么距离之和也就是 x A1 x A2 x Ap A p 1 x A p 2 x An
  • 【CSDN竞赛第17期】简要题解 92.5分

    目录 1 判断胜负 简单字符串 题目 题解 比赛时代码 2 买铅笔 简单算数 题目 题解 代码 3 拯救爱情 得分70 题目 题解 比赛时代码 4 拯救公主 中国剩余定理 或 模拟 题目 题解 模拟 中国剩余定理 比赛时代码 1 判断胜负
  • 杭电OJ_(2043)密码

    Problem Description 网上流传一句话 常在网上飘啊 哪能不挨刀啊 其实要想能安安心心地上网其实也不难 学点安全知识就可以 首先 我们就要设置一个安全的密码 那什么样的密码才叫安全的呢 一般来说一个比较安全的密码至少应该满足
  • c编程:求出4×4矩阵中最大和最小元素值及其所在行下标和列下标,求出两条主对角线元素之和。

    求出4 4矩阵中最大和最小元素值及其所在行下标和列下标 求出两条主对角线元素之和 include
  • stl_set

    begin 返回指向第一个元素的 迭代器 clear 清除所有元素 size 集合中元素的数目 count 返回某个值元素的个数 empty 如果集合为空 返回true 真 end 返回指向最后一个元素之后的迭代器 不是最后一个元素器 in
  • Buncket Sort桶排序(c++)实现代码

    代码原理我就不说了 参考 算法导论 原书第三版 p112 直接上代码会不会很爽 ConsoleApplication1 cpp 定义控制台应用程序的入口点 This programme is designed to show the Bun
  • “Shopee杯” 武汉大学(网络预选赛)D - DIY Masks at Home

    Shopee杯 武汉大学 网络预选赛 D DIY Masks at Home 题目链接 Click 时间限制 C C 5秒 其他语言10秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 题
  • HDU--1050:Moving Tables (贪心)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1050 2 解题思路 将每个输入的起始房间和结束房间转换为房间前面的区间 按区间起始位置从小到大排序 首先取第一个区间 后续如果有区间的起始位
  • ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

    HDOJ题目地址 传送门 Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total S
  • ACM学习计划

    看完人家的博客 发现任重道远 一位高手对我的建议 一般要做到50行以内的程序不用调试 100行以内的二分钟内调试成功 acm主要是考算法的 主要时间是花在思考算法上 不是花在写程序与debug上 下面给个计划你练练 第一阶段 练经典常用算法
  • hdu 5792 World is Exploding 2016 Multi-University 5

    Problem acm hdu edu cn showproblem php pid 5792 题意 给一个序列 V 问有多少个由下标组成的四元组 a b c d 满足 a b c d a lt b c lt d Va lt Vb Vc g
  • 数的划分(递归)

    整数划分是另外的问题 题目描述 Description 将整数n分成k份 且每份不能为空 任意两种划分方案不能相同 不考虑顺序 例如 n 7 k 3 下面三种划分方案被认为是相同的 7 1 1 5 7 1 5 1 7 5 1 1 问有多少种
  • AcWing 1247. 后缀表达式

    老师的讲课网址 https www acwing com video 736 第二个图就已经告诉我们只要有一个减号 我们就可以组成至少含一个减号的所有组合 比如说一个减号三个加号我们可以组合成 1 2 3 4 所以代码如下 include
  • ACM-子串(字符串处理)

    问题描述 有一些由英文字符组成的大小写敏感的字符串 请写一个程序 找到一个最长的字符串 x 使得 对于已经给出的字符串中的任意一个 y x 或者是 y 的子串 或者 x 中的字符反序之后得到的新字符串是 y 的子串 输入数据 输入 输入的第
  • Ugly Numbers

    题目描述 Ugly numbers are numbers whose only prime factors are 2 3 or 5 The sequence 1 2 3 4 5 6 8 9 10 12 shows the first 1
  • kuangbin的模板

    直接链接 间接链接

随机推荐

  • 电机与接触器小结

    目录 各类电机区别 交流 直流电机的区别 同步 异步两类电机区别 为什么会同步 为什么会不同步呢 永磁同步电机 永磁同步电机内部构造 永磁同步电机工作原理 普通 变频两类电机区别 电动机的绝缘强度问题 谐波电磁噪声与震动 低转速时的冷却问题
  • 全面认识Linux下打包解压压缩命令

    1 前言 最近通过sudo tar czf usr src tgz usr src 这个命令发现我对打包方面的命令一无所知 故正式学习记录下 这个命令动作为 将 usr src 目录下的文件打包压缩为当前路径下的usr src tgz文件
  • Explain详解与索引最佳实践

    文章目录 Explain 解释 示范表 使用语句 explain 每一列说明 id select type table type key len ref rows EXTRA 索引最佳实践 Explain 解释 示范表 DROP TABLE
  • VMware虚拟机下的CentOS7网络配置

    一 虚拟机设置 VMware界面最上面 选择虚拟机 gt 设置 将网络连接改为桥接模式 如下图所示 二 查看主机DNS地址 win R 输入cmd 启动命令行界面 输入ipconfig all 查看主机DNS服务器地址 如下图所示 三 修改
  • 基于ARM-contexA9蜂鸣器驱动开发

    上次 我们写了一个LED的驱动程序 这一节 我们只需稍微改动一下就可以实现蜂鸣器的驱动 让我们来看看吧 还是跟之前一样 先找电路图 找到电路板上对应的引脚和相关联的寄存器 1 看电路图 1 蜂鸣器接口位于电路板的底板 看电路图可知道是高电平
  • Servlet与Jsp之间有哪些数据传输的方式?

    前言 根据MVC架构大家都很清楚 servlet充当咱们mvc中的c 也就是controller 而jsp则是咱们的view 所以呀 根据它们各自的职责划分 servlet相当于是一个指挥官 将页面数据交给业务逻辑层去处理 处理后的数据也就
  • 斗破苍穹算法版—萧炎的成长之路(一)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 前端炫酷代码分享 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架构咱们从0说 数据流通的精妙之道 文章目录 前言 主
  • 什么是CA数字证书,CA证书有什么作用?

    CA证书 也是根证书 是最顶级的证书 也是CA认证中心与用户建立信任关系的基础 用户的数字证书必须有一个受信任的根证书 用户的数字证书才是有效的 那么 CA数字证书是干嘛用的 有什么作用呢 通过下文来详细了解下 所谓CA认证中心 它是采用P
  • Latex模板elsevier爱思唯尔KBS投稿步骤

    1 注册账号 我投的是KBS Elsevier旗下的应该都差不多 2 选择文章类型 我选的 full length article 3 Attach Files 必填项可以去搜一下 都有模板 Elsevier作者指南都有超链接 可以直接看例
  • python手写光线追踪(不使用图形学API)——第二期

    本文未经允许禁止转载 B站 https space bilibili com 455965619 作者 Heskey0 赫斯基皇 二 specular材质和glass材质 在这个案例中 总共有4种材质 none specular glass
  • 并发编程基础和原理

    1 了解多线程的意义和使用 1 1 什么是进程 什么是线程 进程 是一个正在执行中的程序 每一个进程执行都有一个执行顺序 该顺序是一个执行路径 或者叫一个控制单元 我们打开电脑上的qq时 点击qq exe 电脑就会运行一个qq的程序 这个程
  • 【ML on Kubernetes】第 2 章:理解 MLOps

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【目标检测】38、PAA

    文章目录 一 背景 二 方法 2 1 Probabilistic Anchor Assignment Algorithm 2 2 IoU prediction as Localization Quality 2 3 Score Voting
  • ctfshow 网络迷踪-哐啷哐啷+鲶鱼之谜

    12 哐啷哐啷 通过谷歌识图找到这张图片出自的文章 得到这是这是新疆和田 ctfshow 和田 13 鲶鱼之谜 这题在群里有wp我就不写了各位可以参考一下群文件 最终flag ctfshow ca1524 1837
  • 运行jupyter notebook 时报“kernel error“ ,以及如何切换python解释器

    运行jupyter notebook 时报 kernel error 以及如何切换python解释器 一般出现 kernel error 时 多半是因为系统中存在较多的python解释器 1 查看内核 假定读者已通过pip 安装了 jupy
  • uni-app微信小程序-利用canvas给图片添加水印

    实现思路 一 选择图片 二 将图片绘制到 canvas 中并绘制水印 三 将 canvas 画布转换为图片地址 四 最终效果 五 完整代码 实现思路 选择图片 将图片绘制到 canvas 中并绘制水印 将添加水印的图片绘制到 canvas
  • 2023最新的Java八股文合集来了,彻底解决一线大厂面试难题

    纵观今年的技术招聘市场 Java 依旧是当仁不让的霸主 即便遭受 Go 等新兴语言不断冲击 依旧岿然不动 究其原因 Java 有着极其成熟的生态 这个不用我多说 Java 在 运维 可观测性 可监 控性方面都有着非常优秀的表现 Java 也
  • python学习笔记---错误、调试和测试【廖雪峰】

    错误 调试和测试 三类错误 有的错误是程序编写有问题造成的 比如本来应该输出整数结果输出了字符串 这种错误我们通常称之为bug bug是必须修复的 有的错误是用户输入造成的 比如让用户输入email地址 结果得到一个空字符串 这种错误可以通
  • android ApplicationInfo类

    1 获取apk文件的图标 java view plain copy print public static Drawable getApkFileIcon String apkPath Context context PackageMana
  • ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

    HDOJ题目地址 传送门 Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total S