当前位置: 首页 > news >正文

【算法】期末复盘,酒店住宿问题——勿向思想僵化前进

果宝特攻-西瓜尊

文章目录

  • 前言
  • 题目描述
  • 卡在哪里
  • 代码(C++)

前言

省流:一个人也可以住双人间,如果便宜的话。

害!尚正值青春年华,黄金岁月,小脑瓜子就已经不灵光咯。好在我在考试的最后一分钟还是成功通过了这题,真刺激。

题目描述

一共有 n 个小队,每个小队有 3 个队员,每个队员有一个号码 x 。酒店有单人间和双人间两种,其中单人间一晚上 a 元,双人间一晚上 b 元。为了避免尴尬,只有同属一个小队且号码相同的两个队员,才可以一起住双人间(不要纠结为什么号码相同就不会尴尬)。
:将n个小队的所有队员全部安排好房间,最少需要花费多少元?

输入描述
第一行三个整数:n, a, b。然后有 n 行,每行有三个整数,分别是一个小队中三个队员的号码。
其中 1 <= n, a, b <= 100,0 <= x(号码) <= 10。

卡在哪里

这题看起来就简单,我起初的思路是,根据一个双人间是否比两个单人间要便宜,分两种情况:

  1. 一个双人间更便宜。那么,当一个小队三人中存在某两人编号相同,就给他们开一个双人间,剩下一个人开单人间;这个小队的花费就是a+ba+ba+b
  2. 两个单人间更便宜。那么,不管编号是否有相同,咱都住单人间就好了。

看似好像没啥bug,但有个神奇的问题,双人间一定要两个人才可以住吗?如果b<ab<ab<a,那么一个人睡单人间是睡,一个人睡双人间也是睡,一个人也不会存在尴尬的问题,还便宜。

代码(C++)

#include<iostream>
using namespace std;
int main(void){int n, a, b;  //人数,单人间价格,双人间价格cin >> n >> a >> b;int count(0); // 花费for(int i = 0; i < n; i++){int x, y, z;  // 三个队员的号码cin >> x >> y >> z;// 1. 双人间太贵if(a * 2 < b){count += a * 3;}// 2. 双人间比两个单人间便宜else if(a < b && b <= a * 2){if(x == y || x == z || y == z){count += a + b;}else{count += a * 3;}}// 3. 双人间比一个单人间还便宜else{if(x == y || x == z || y == z){count += b * 2;}else{count += b * 3;}}}cout << count;return 0;
}

http://www.lryc.cn/news/30560.html

相关文章:

  • Java中的Comparator 与 Comparable详解
  • 计算机科学导论笔记(二)
  • GEC6818开发板JPG图像显示,科大讯飞离线语音识别包Linux_aitalk_exp1227_1398d7c6运行demo程序,开发板实现录音
  • 如何判断树莓派通过GPIO与5G模块成功连接?
  • Java——包装类和List及ArrayList
  • matlab - 程序流程控制、函数文件、特殊函数、调试与优化
  • Toponogov 比较定理及其应用
  • 力扣sql简单篇练习(二十二)
  • 【开源硬件】STM32F030R8T6系统板
  • ES之DSL查询文档基础查询
  • 数据结构与算法之堆排序
  • Vue3 中的模板语法
  • Redis十大类型——Hash常见操作
  • Python采集本地二手房,一键知晓上万房源信息
  • Ubuntu 18.04 出现GLIBC_2.28 not found的解决方法(亲测有效)
  • Java文档搜索引擎总结
  • Linux内核学习笔记——页表的那些事。
  • C++,Qt分别读写xml文件
  • WebStorm安装教程【2023年最新版图解】一文教会你安装
  • 用户态和内核态,系统调用
  • Java 包装类
  • Raspberry Pi GPIO入门指南
  • 汇编语言程序设计(三)之汇编程序
  • 用二极管和电容过滤电源波动,实现简单的稳压 - 小水泵升压改装方案
  • 【数据结构与算法】数据结构有哪些?算法有哪些?
  • 使用Element-UI展示数据(动态查询)
  • lamda 表达式例子全集
  • 计算机网络第八版——第一章课后题答案(超详细)
  • 嵌入式和Python(二):python初识及其基本使用规则
  • C语言详解双向链表的基本操作