hdoj 1052 Tian Ji -- The Horse Racing 贪心算法

2023-10-31

这道题就是解决选择策略问题。

思路一:

先将田忌跟齐王的马的速度数组进行一次冒泡排序

1、如果田忌最慢的马比齐王最慢的马快,则比慢马

2、如果田忌最慢的马比齐王最慢的马慢,则用田最慢的马跟齐最快的马比  //消耗的快马这是贪心的第一步

3、如果田忌最慢的马的速度与齐威王最慢的马速度相等

    3.1、如果田忌最快马的比齐威王最快的快,则比快马                         //这是贪心的第二步

    3.2、如果田忌最快马比齐威王最快的慢,田忌慢VS齐王快

    3.3、如果田忌最快马比齐威王最快的相等,田忌慢VS齐王快

#include<cstdio>
#include<algorithm>
using namespace std;
int a[1010],b[1010];
int main()
{
    int n,i,awin,bwin,afast,bfast,aslow,bslow;
    while(scanf("%d",&n)&&n)
    {
        for(i=0;i<n;++i)
            scanf("%d",&a[i]);//tian的马
        for(i=0;i<n;++i)
            scanf("%d",&b[i]);

        sort(a,a+n);//从小到大
        sort(b,b+n);

        awin=bwin=0;//记录赢的次数
        afast=bfast=n-1;//标记最快的马
        aslow=bslow=0;//标记最慢的马

        for(i=0;i<n;++i)
        {
            if(a[aslow]>b[bslow]) //tian的慢马 大于 king的慢马
            {
                awin++;  //tian胜利
                aslow++; //tian的马
                bslow++; //king的马
            }
            else if(a[aslow]<b[bslow]) //用最慢马消耗国王的最快马
            {
                bwin++; //king胜利
                aslow++;
                bfast--;
            }
            else//两匹最慢马速度相同时
            {
                if(a[afast]>b[bfast])   //tian的快马 大于 king的快马
                {
                    awin++;
                    afast--;
                    bfast--;
                }
                else if(a[aslow]<b[bfast])  //如果田忌的最快马不能胜国王的最快马,则用慢马消耗
                {
                    bwin++;
                    aslow++;
                    bfast--;
                }
            }
        }
        printf("%d\n",200*(awin-bwin));
    }
    return 0;
}

思路二:

 

先将田忌跟齐王的马的速度数组进行一次冒泡排序

1、如果田忌最快的马比齐王最快的马快,则快马比

2、如果田忌最快的马比齐王最快的马慢,则用田最慢的马跟齐最快的马比  //这是贪心的第一步

3、如果田忌最快的马的速度与齐威王最快的马速度相等

  3.1、如果田忌最慢的比齐威王最慢的快,则慢马比                        //这是贪心的第二步

  3.2、如果田忌最慢的比齐威王最慢的慢,田忌慢VS齐王快(这里要判断田忌慢马和齐王快马速度是否相等

  3.3、田忌最慢的与齐威王最慢的相等,田忌慢VS齐王快(这里要判断田忌慢马和齐王快马速度是否相等

#include <iostream>
#include <algorithm>
#include <string>
#include <map>
#include <stdio.h>

using namespace std;

bool compare(int a, int b) {
    return a < b;   //从小到大排序
}

int main() {
    int n;
    int sum = 0;
    int tj[1000] = {0};
    int gw[1000] = {0};
    while (cin >> n && n) {
        sum = 0;
        tj[1000]={0};
        gw[1000]={0};
        for (int j = 0; j < n; j++) {
            cin >> tj[j];
        }
        for (int j = 0; j < n; j++) {
            cin >> gw[j];
        }
        sort(tj, tj + n, compare);
        sort(gw, gw + n, compare);

        int tj1 = 0, tj2 = n - 1;//比较指针
        int gw1 = 0, gw2 = n - 1;

        while (n--) {
            if (tj[tj2] < gw[gw2]) {  // 比国王的慢
                gw2--;
                tj1++;
                sum=sum-200;
                continue;
            }
            if (tj[tj2] > gw[gw2]) {  // 比国王的快
                gw2--;
                tj2--;
                sum=sum+200;
                continue;
            }
            if (tj[tj2] = gw[gw2]) {  // 和国王的一样
                if(tj[tj1] <= gw[gw1]){  //田 最慢的比国王 最慢的 慢
                    if(tj[tj1] != gw[gw2]){  //注意:田忌慢马和齐王快马速度是否相等
                        sum=sum-200;
                    }
                    gw2--;       //田用慢的比
                    tj1++;
                    continue;
                }
                if(tj[tj1] > gw[gw1]){  //田 最慢的比国王 最慢的 快
                    sum=sum+200;
                    tj1++;      //田用快的比
                    gw1++;

                    continue;
                }
            }
        }
        cout << sum << endl;
    }
    return 0;
}

 

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

hdoj 1052 Tian Ji -- The Horse Racing 贪心算法 的相关文章

  • HDOJ 题目2050 折线分割平面(递推)

    折线分割平面 Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 16441 Accepted Subm
  • HDOJ 1106 排序

    题目地址 xff1a http acm hdu edu cn showproblem php pid 61 1106 Problem xff1a 输入一行数字 xff0c 如果我们把这行数字中的 5 都看成空格 xff0c 那么就得到一行用
  • HDOJ/HDU 1085 母函数 Holding Bin-Laden Captive!

    Holding Bin Laden Captive Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s
  • HDOJ 1058 Humble Numbers解题报告【DP】

    Humble Numbers 题目详见http acm hdu edu cn showproblem php pid 61 1058 开始拿到这个题目的时候还纠结了半天 xff0c 英语很差的话这个题是不可能AC的 而我就是其中之一 Hum
  • hdoj 1052 Tian Ji -- The Horse Racing 贪心算法

    这道题就是解决选择策略问题 思路一 先将田忌跟齐王的马的速度数组进行一次冒泡排序 1 如果田忌最慢的马比齐王最慢的马快 则比慢马 2 如果田忌最慢的马比齐王最慢的马慢 则用田最慢的马跟齐最快的马比 消耗齐的快马这是贪心的第一步 3 如果田忌
  • Array merging

    Array merging 题意 给出两个长度为n的数组a b 现在每次可以取出任意一个数组的第一个元素 放到c数组的后面 c数组一开始为空 求c数组连续相等的最长子串长度 思路 这里可以用两个map把a b数组每个元素对应的连续相等的最长
  • 紫书《算法竞赛入门经典》

    紫书 算法竞赛入门经典 题目一览 第3章 数组和字符串 例题 UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 340 Master Mind Hints UVA 158
  • New Year and Social Network【Hello 2020 F】【拓扑+LCA+贪心】

    题目链接 看到比赛的时候zzq大聚聚用了LCT做的 在线 首先 我们可以发现 两棵大小相同 构造形状不同的树 一定是可以用另一棵树的边来维持这棵树上的每一个点的相互连通性的 我的做法 就是基于这样展开的 我们有T1 T2两棵树 现在我们要去
  • HDOJ 1052 Tian Ji -- The Horse Racing

    Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total Submission s 2
  • AcWing 104. 货仓选址

    题目 在一条数轴上有 N 家商店 它们的坐标分别为 A1 AN 现在需要在数轴上建立一家货仓 每天清晨 从货仓到每家商店都要运送一车商品 为了提高效率 求把货仓建在何处 可以使得货仓到每家商店的距离之和最小 输入格式 第一行输入整数N 第二
  • 多元Huffman编码问题

    题目链接 题意 最多可以让k堆合并 每一次合并的花费为河合并堆的数量 问最多和最少的花费 题解 最少的花费一定是每次合并的堆数尽可能多 这样我们就会减少前面已经合并的堆的重复计算 所以 每次合并k堆时最少 每次合并2堆时最大 另外 最少的时
  • 2605. 从两个数字数组里生成最小数字

    文章目录 Tag 题目来源 题目解读 解题思路 方法一 枚举比较法 方法二 集合的位运算表示法 写在最后 Tag 贪心 位运算 数组 题目来源 2605 从两个数字数组里生成最小数字 题目解读 给定两个各自只包含数字 1 到 9 的两个数组
  • BZOJ4345 [POI2016]Korale

    在病房里日题真是一种独特的体验 首先考虑求第一问 我们先把所有元素排序 我们用优先队列维护选数的集合 对每个集合维护集合里的元素的和v和最后一个元素 即最大的元素 lst 初始的时候我们把只包含最小元素的集合推入队列 那么我们取出一个队头元
  • 货仓选址(贪心)

    我之前在多篇博客中提到货仓选址 却发现从未仔细介绍过货舱选址 今天就来好好说一下货舱选址这个问题 就以这个图来说 我们假设Ap 1 gt x gt Ap 那么距离之和也就是 x A1 x A2 x Ap A p 1 x A p 2 x An
  • 【leetcode】1052. 爱生气的书店老板

    题目 解法 class Solution def maxSatisfied self customers grumpy X gt int 固定窗口最大和 param customers param grumpy param X return
  • LeetCode-1827. 最少操作使数组递增【贪心,数组】

    LeetCode 1827 最少操作使数组递增 贪心 数组 题目描述 解题思路一 简单暴力 解题思路二 优化1 ans是操作数 mx是当前最大元素 mx无论如何会依次递增 解题思路三 优化2 遇到小的数就pre 1 否则变为num 题目描述
  • BZOJ4868 [Shoi2017]期末考试

    YY一下的话感觉代价关于最晚出分时间是一个单峰函数 三分最晚的出分时间 然后贪心一下算代价就行 如果A gt B就只用B就行了 要不然的话出分时间小于当前限制的都可以随便往后调直到到达限制 那么先尽量用A 调不到限制以内的再用B即可 inc
  • +-字符串(简单贪心)

    字符串 时间限制 1000 ms 内存限制 65535 KB 难度 1 描述 Shiva得到了两个只有加号和减号的字符串 字串长度相同 Shiva一次可以把一个加号和它相邻的减号交换 他想知道最少需要多少次操作才能把第一个字符串变换成第二个
  • BZOJ3425 Poi2013 Polarization

    最小值一定是n 1 每条边贡献一个答案 显然 首先我们要证明这道题的一个性质 最优解一定具有如下形式 以树的某一个重心 可以是任意一个 为根 根的每一个子树里的所有边要么都指向根 要么都指向叶子 引理 首先对于一棵树 我们把所有边的朝向反转
  • 编程之美2015初赛第二场AB

    题目1 扑克牌 时间限制 2000ms 单点时限 1000ms 内存限制 256MB 描述 一副不含王的扑克牌由52张牌组成 由红桃 黑桃 梅花 方块4组牌组成 每组13张不同的面值 现在给定52张牌中的若干张 请计算将它们排成一列 相邻的

随机推荐

  • ARM(IMX6U)裸机按键输入实验(BSP+SDK、GPIO输入与输出、按键消抖)

    参考 Linux之ARM IMX6U 裸机按键输入实验 GPIO的输出与输入 作者 一只青木呀 发布时间 2020 08 17 21 43 37 网址 https blog csdn net weixin 45309916 article
  • Python实现顺序表

    Python实现顺序表 关于顺序表的介绍 请参考 https blog csdn net weixin 43790276 article details 103848039 Python 中的列表和元组都属于顺序表 下面根据顺序表的特性 自
  • 段错误的调试方法(printf输出、GDB)

    参考 段错误产生原因及简单的调试方法 参考 如何解决段错误 参考 C语言gdb调试之精髓 常用命令 多进程 多线程 程序日志 网址 https www bilibili com video BV1ei4y1V758 from search
  • 1031. 查验身份证(15)

    一个合法的身份证号码由17位地区 日期编号和顺序编号加1位校验码组成 校验码的计算规则如下 首先对前17位数字加权求和 权重分配为 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 然后将计算的和对11取模得到值Z 最
  • 艺赛旗RPA--经验分享:Python 中的“特殊”函数

    了解RPA www i search com cn 学习RPA https support i search com cn 私有函数 魔法函数 回调函数 在任何编程语言中 都会规定某些对象 属性 方法 函数 类等 只能够在某个范围内访问 出
  • Linux MISC 驱动实验

    目录 MISC 设备驱动简介 硬件原理图分析 实验程序编写 修改设备树 beep 驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 misc 的意思是混合 杂项的 因此MISC 驱动也叫做杂项驱动 也就是当我们板子
  • Docker使用docker compose部署zfile 实现在线浏览下载linux中的文件

    gt Docker及docker compose的安装点这里 创建 docker compose yml 文件 version 3 services zfile image stilleshan zfile container name z
  • Eudcoder--Java面向对象(第五章)- 包装类

    大家好啊 好久不见 新的一期来啦 让我们一起学习 快来 教你一个解除部分网课平台关于复制粘贴限制的方法 第一题 请仔细阅读右侧代码 根据方法内的提示 在Begin End区域内进行代码补充 具体任务如下 完成基本数据类型与包装类之间的相互转
  • echarts.common.min.js:22 Uncaught Error: Component series.bar  not exists. Load it first

    一 统计表无法显示 浏览器控制台报错 echarts common min js 22 Uncaught Error Component series bar not exists Load it first at Function Vn
  • 数据的存储方式(Parquet、ORC)

    文章目录 数据的存储方式 按行存储 按列存储 Parquest 文件布局 概念 并行处理的单元 配置 Row Group Size 行组的大小 Data Page Size 数据页的大小 元数据 数据页 Hive下的Parquet实验 Pa
  • postgresql:字符串累加拼接(聚合分组拼接)

    问题 有时 想要将某字段在查询列表的时候 按分组的不同 同组字符串累加拼接起来 原表数据内容如下 想要达到的目标结果 是把cdate tno的字符串分组累加拼接起来 如下 解决方案 使用聚合函数 string agg 示例如下 SELECT
  • 基于self-attention的BILSTM时间序列预测Python程序

    基于self attention的BILSTM时间序列预测Python程序 特色 1 单变量 多变量输入 自由切换 2 单步预测 多步预测 自动切换 3 基于Pytorch架构 4 多个评估指标 MAE MSE R2 MAPE等 5 数据从
  • 微信公众号测试号url和token绑定失败解决问题

    前提准备 在本地搭建一个本地服务器 具体查看如何搭建一个本地服务器 首先 我们需要到natapp获取一个信道 博主这里买的是vip1型的 当然也可以使用免费型的 根据需要选择 完了之后 去 我的隧道 查看购买的信道 复制里面的authtok
  • Java之包装类的算法小题的练习

    算法小题 练习一 需求 键盘录入一些1 10日之间的整数 并添加到集合中 直到集合中所有数据和超过200为止 代码示例 public class Test1 public static void main String args 键盘录入一
  • 修改Git远程地址 git config remote.origin.url "https://..."

    仓库管理 添加或指定远程仓库地址 git remote set url origin https git config remote origin url https 删除 git remote rm origin
  • python基础--函数入门与进阶

    函数入门与进阶 函数参数的使用 位置参数 关键字参数 默认参数 可变参数 关键字可变参数 函数的相互调用 函数的作用域 全局作用域 局部作用域 数据的打包与拆包 数据打包 数据的拆包 lambda函数 递归 前言 此专栏文章是专门针对Pyt
  • 高并发编程学习(2)——线程通信详解

    为获得良好的阅读体验 请访问原文 传送门 前序文章 高并发编程学习 1 并发基础 https www wmyskxz com 2019 11 26 gao bing fa bian cheng xue xi 1 bing fa ji chu
  • [Python图像处理] 九.形态学之图像开运算、闭运算、梯度运算

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • python设置坐标轴刻度值字体大小_python 设置xlabel,ylabel 坐标轴字体大小,字体类型...

    本文介绍了python 设置xlabel ylabel 坐标轴字体大小 字体类型 分享给大家 具体如下 coding utf 8 import matplotlib pyplot as plt 数据设置 x1 0 5000 10000 15
  • hdoj 1052 Tian Ji -- The Horse Racing 贪心算法

    这道题就是解决选择策略问题 思路一 先将田忌跟齐王的马的速度数组进行一次冒泡排序 1 如果田忌最慢的马比齐王最慢的马快 则比慢马 2 如果田忌最慢的马比齐王最慢的马慢 则用田最慢的马跟齐最快的马比 消耗齐的快马这是贪心的第一步 3 如果田忌