codeup 1128: 出租车费 贪心|找规律

1128: 出租车费
时间限制: 1 Sec 内存限制: 32 MB
提交: 871 解决: 299
[提交][状态][讨论版][命题人:外部导入]

题目描述
某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。
一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。
例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。
现在给你整个行程的公里数,请你计算坐出租车的最小花费。

输入
输入包含多组测试数据。每组输入一个正整数n(n<10000000),表示整个行程的公里数。
当n=0时,输入结束。

输出
对于每组输入,输出最小花费。如果需要的话,保留一位小数。

样例输入
3
9
16
0
样例输出
10
20.4
36
分析:最小花费 考虑dp或贪心
从1往后写会发现 这个问题最小花费有区间规律 每8个里程会来个循环 最后余下的如果多于4 那么就重新打个车计费 如果少于4 就按照原2.4元车费计费比较省钱
所以这里就相当于直接取局部最优就等于全局最优了
整个规则适用于任意n情况 因为这个每四个2.4所省下的0.4元都可以被一个2.4-2 = 0.4 给平均掉
而后者的计费方式后四个都是每公里2元 跟一路2.4元下来有直观的差距
所以每个输入n都取决于相同的规则判断
故局部的规则最优就等于全局的最优
所以即便是最优问题 也可能从中找出规律 然后按照规律贪心解之。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
#include<cmath>
#include<windows.h>
#include<algorithm>
#include<set>
const double eps = 1e-1;
using namespace std;
typedef long long ll;
int main(){int n;while(scanf("%d",&n),n){double sum=0;if(n<=4)puts("10");else{sum=(n/8)*18 + (n%8!=0?( n%8>4? (10 + (n%4) * 2): (2.4*(n%4==0?4:(n%4)))):0);if(sum-(int)sum>eps)printf("%.1f\n",sum);else printf("%d\n",(int)sum);}}return 0;
}

ps:这应该是我写过的最长的条件表达式了。。。

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

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

相关文章

[Java基础][Java]toString()方法

【原理解析】 toString()方法返回反映这个对象的字符串 因为toString方法是Object里面已经有了的方法&#xff0c;而所有类都是继承Object&#xff0c;所以“所有对象都有这个方法”。 它通常只是为了方便输出&#xff0c;比如System.out.println(xx)&#xff0c;括号里面的…

MySQL系列--4.使用Python3访问数据库

1、安装MySQL驱动 pip install mysql-connector 安装完成后进入命令行模式&#xff0c;导入驱动&#xff0c;如果不报错&#xff0c;说明安装成功 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "…

第三十一期:世界上有四类人永远不可能成为编程界牛人(个人见解,欢迎补充)

本人歌谣&#xff0c;出来工作也有两年了。大学挂科无数&#xff0c;出来想搞技术。平时也就是以工作学习的知识为主&#xff0c;无聊的时候就会学习一些关于科技的知识。 在这本人给大家传授一些学习编程的心得体会&#xff0c;供大家分享交流&#xff1a; 1.没有专注力和恒心…

[Java]==和equals()的区别(按照数据类型区分)

背景知识 【引用类型】 复合数据类型是引用类型 **1.基本数据类型&#xff0c;也称原始数据类型。**byte,short,char,int,long,float,double,boolean 他们之间的比较&#xff0c;应用双等号&#xff08;&#xff09;,比较的是他们的值。 基本数据类型比较&#xff0c; 和 …

某简单易懂的人脸识别 API 的开发环境搭建和简易教程

最近接了个人脸识别相关的项目&#xff0c;是基于某个非常简单易懂的人脸识别 API&#xff1a;face_recognition 做的。这个库接口非常傻瓜&#xff0c;很适合新手上手&#xff0c;而且可以研究其源码来学习 dlib 这个拥有更加灵活、强大的人脸识别功能的库。本文介绍了该 API …

第三十二期:如何摆脱「技术思维」的惯性?

虽然从标题上看&#xff0c;这篇文章是写给“技术人”的&#xff0c;但 从广义上来说&#xff0c;只要你是一位以理性见长的人&#xff0c;那么这篇文章要讲的东西可能会与你有关。 虽然从标题上看&#xff0c;这篇文章是写给“技术人”的&#xff0c;但 从广义上来说&#xff…

[Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]

【问题描述】[中等] 【解答思路】 1. 拓扑排序 复杂度分析 HashSet[] 数组 import java.util.HashSet; import java.util.LinkedList; import java.util.Queue;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {if (numCourses &l…

codeUp 2031 To fill or not to fill 复杂贪心

2031: To Fill or Not to Fill 时间限制: 1 Sec 内存限制: 32 MB 提交: 599 解决: 132 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way fro…

RabbitMQ(1) - win+rabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的&#xff0c;可服用的企业消息系统。它遵循Mozilla Public License开源协议&#xff0c;采用 Erlang 实现的工业级的消息队列(MQ)服务器&#xff0c;Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前&…

[周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

【问题描述】5457. 和为奇数的子数组数目[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结尾的和为偶数数量 第 2 步&#xff1a;状态转移方程 for(int i1;i<n;i){if(arr[i]%20){dp[i][0]…

第九期: 阿里巴巴程序员常用的15款开发者工具

阿里巴巴将自身在各类业务场景下的技术积淀&#xff0c;通过开源、云上实现或工具等形式对外开放&#xff0c;本文将精选了一些阿里巴巴的开发者工具&#xff0c;希望能帮助开发者们提高开发效率、更优雅的写代码。 从人工到自动化&#xff0c;从重复到创新&#xff0c;技术演进…

WPF 绑定StaticResource到控件的方法

WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法资源文件内的属性能否直接通过绑定应用到控件&#xff1f;答案是肯定的。 比如&#xff0c;我们要直接把下面的<SolidColorBrush x:Key"RedBrush" Color"#FFFF0000" />直…

第三十三期:对于人工智能的恐惧及其5个解决方法

实施人工智能技术的IT领导人可能会感到一些恐惧&#xff0c;这有着充分的理由。人工智能在拥有数十年发展和应用历史的同时却有着奇怪的定位&#xff0c;但对于许多人来说&#xff0c;人工智能仍然是一种未来主义的感觉。 实施人工智能技术的IT领导人可能会感到一些恐惧&#x…

[Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]

【问题描述】[简单] 【解答思路】 1. 双指针 时间复杂度&#xff1a;O(NM) 空间复杂度&#xff1a;O(1) class Solution { public:bool isSubsequence(string s, string t) {int n s.length(), m t.length();int i 0, j 0;while (i < n && j < m) {if (s[…

codeUp 2143: 迷瘴 浮点计算|贪心

2143: 迷瘴 时间限制: 1 Sec 内存限制: 32 MB 提交: 666 解决: 201 [提交][状态][讨论版][命题人:外部导入] 题目描述 小明正在玩游戏&#xff0c;他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长…

权限分配之权限的展示

最后就是权限的展示了&#xff1a;对前面的 总结&#xff1a;  1. 一级菜单列表&#xff0c;是我对 menu表的&#xff0c;增删改查。  2. 二级菜单列表&#xff0c;是我对Permission表中&#xff0c; 可以作为二级菜单存在&#xff0c;如 客户列表、账单列表的 增删改查  …

优先队列----堆

问题 打印机打印作业一般是放在队列中的。如果按照先来先打印的顺序&#xff0c;有一个100页的打印任务&#xff0c;那么会让后面短小的任务等待很长时间。更合理的做法也许是最后处理最耗时的打印任务&#xff0c;不管它是不是最后提交上来的。 在多用户操作系统中&#xff…

第三十四期:游戏开发中常见的10种编程语言

游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要技术水平。 他们需要具有特定需求的编程语言。 游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要…

[Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

【问题描述】5458. 字符串的好分割数目[中等] 【解答思路】 1. 双指针 前面的搜索前面的个数和&#xff0c;后面的搜索后面的个数和 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {/*双指针做法&#xff0c;前面的搜索前面的个数和&#xff0c;…

Spring Aop——给Advice传递参数

给Advice传递参数 Advice除了可以接收JoinPoint&#xff08;非Around Advice&#xff09;或ProceedingJoinPoint&#xff08;Around Advice&#xff09;参数外&#xff0c;还可以直接接收与切入点方法执行有关的对象&#xff0c;比如切入点方法参数、切入点目标对象&#xff08…