码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 贪心算法之经典题目---订票


    题目:一票务办公室为音乐会售票,出售某一固定数量的连号票(简称套票)。购票订单以该套票中最小的座位号作为标志。由于不能满足所有订单,故而采用:若订单完全满足观众要求的票全价;若订单中至少一个座位与观众要求不同,则半价。现求怎样处理订单,才能使总收入最高。输入为套票里座位数量,订单数以及每个订单对应的座位号(最小的座位号为标志)。输出订单处理结果,即处理后的套票号码。(不要求顺序,且输入数据都符合要求,最小座位号为1,订单可以不被接受。)

    解题思路:

    采用贪心算法,3个步骤:

    1)  试图分配尽可能多的全价套票。

    逆序处理。按照座位号递减的次序来处理订单,只要可行就立马接受该订单。记为s1。

    2)  调整s1以减少浪费。

    正序处理。若要用订单p来代替p1,就要求p

    3)  用半价票填充空位。

    剩余未被接受的订单全取半价票,填充s2中全价套票之间的空位。记为s3。

    代码:

     1 #include 
     2 #include 
     3 #include 
     4 #include 
     5 #include 
     6 #include 
     7 #include 
     8 #include 
     9 
    10 using namespace std;
    11 
    12 #define ll long long
    13 
    14 const int maxl=100;//座位数上限
    15 const int nl=50;//订单数上限
    16 int len,n;//套票座位长度,订单数
    17 int nn[nl],tnn[nl];
    18 bool bn[nl]={};
    19 
    20 int main()
    21 {
    22     //freopen("D:\\input.in","r",stdin);
    23     //freopen("D:\\output.out","w",stdout);
    24     int tn,tc=0,tc2=0;
    25     scanf("%d %d",&len,&n);
    26     for(int i=0;i=0;i--)//the first choose
    31     {
    32         if(nn[i]>tn)    continue;
    33         bn[i]=1;
    34         tc++;
    35         tn=nn[i]-len;
    36     }
    37     tn=1;
    38     for(int i=0;i=nn[i]+len)
    50             {
    51                 bn[i]=1;
    52                 tn=nn[i]+len;
    53                 break;
    54             }
    55             else
    56             {
    57                 if((nn[i]-1)%len<(nn[j]-1)%len)
    58                 {
    59                     bn[i]=1;
    60                     bn[j]=0;
    61                     tn=nn[i]+len;
    62                 }
    63                 break;
    64             }
    65         }
    66     }
    67     tc=n-tc;
    68     tn=1;
    69     for(int i=0;i
                    
  • 相关阅读:
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园服装租赁系统864e2
    Java集合框架
    mac pro M1(ARM)安装:安装zookeeper可视化工具PrettyZoo、ZooKeeperAssistant
    没有 accept,建立 TCP 连接,可以吗?
    世界互联网大会|云轴科技ZStack受邀分享云原生超融合
    MySQL进阶05_索引_SQL优化
    [C++基础] 变量、关键字、运算符、位操作篇
    在HTTP协议层面绕过WAF
    stream对list数据进行多字段去重
    面试最常问的数组转树,树转数组 c++ web框架paozhu实现
  • 原文地址:https://blog.csdn.net/jackson61/article/details/128053695
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号