1683. 困牛放牧(分类讨论)
文章目录
- Question
- Ideas
- Code
Question
Farmer John 的三头获奖奶牛 Bessie、Elsie 和 Mildred,总是会迷路走到农场上遥远的地方去!
他需要你帮助将她们一起赶回来。
农场的草地大体是一块狭长的区域——我们可以将其想象成一条数轴,奶牛可以占据数轴上的任意整数位置。
这 3 头奶牛现在正位于不同的整数位置,Farmer John 想要移动她们,使得她们占据三个相邻的位置(例如,位置 6、7、8)。
不幸的是,奶牛们现在很困,Farmer John 要让她们集中精力听从命令移动并不容易。
任意时刻,他只能使得一头处在“端点”(在所有奶牛中位置最小或最大)位置的奶牛移动。
当他移动奶牛时,他可以命令她走到任意一个未被占用的整数位置,只要在新的位置上她不再是一个端点。
可以看到随着时间的推移,这样的移动可以使奶牛们趋向越来越近。
请求出使得奶牛们集中到相邻位置所进行的移动次数的最小和最大可能值。
输入格式
输入包含一行,包括三个空格分隔的整数,为 Bessie、Elsie 和 Mildred 的位置。
输出格式
输出的第一行包含 Farmer John 需要将奶牛们聚集起来所需进行的最小移动次数。
第二行包含他将奶牛聚集起来能够进行的最大移动次数。
数据范围
每个位置均为一个范围 1…109 内的整数。
输入样例:
4 7 9
输出样例:
1
2
样例解释
最小移动次数为 1——如果 Farmer John 将位置 4 的奶牛移动到位置 8,那么奶牛们就处在连续的位置 7、8、9。
最大移动次数为 2。例如,位置 9 的奶牛可以被移动到位置 6,然后位置 7 的奶牛可以被移动到位置 5。
Ideas
Ideas is located in Code in following.
Code
# 看了大佬的题解 分类讨论 这个题能想出来是分类讨论 但想不出来怎么讨论
lis = list(map(int,input().strip().split()))
lis.sort()# 输出最小值
'''
情况1: 3头牛已经连续, 即----abc-----, 直接输出0情况2: a, b两头牛间隔1, 即---a-b----c-----, 此时只要把c移动到a、b中间即可,输出1情况3: b, c两头牛间隔1, 即---a-----b-c-----, 此时只要把a移动到b、c中间即可,输出1情况4: a,b,c 任意两头牛间隔都不为1,即---a------b----c---,(1)此时只要把c移动到b前面2位,得到---a-----c-b-----,(2)然后再把a移到c,b中间,得到--------cab-----
一共两次操作,输出2
'''
if lis[2]-lis[0] == 2: # 情况1print(0)
else:if lis[0]+2==lis[1] or lis[1]+2 == lis[2]: # 情况2和情况3print(1)else: # 情况4print(2)# 输出最大值
'''
举例,对于---a------b----c---这种情况,
我们可以贪心地把c移到b前面,再把b移到c前面,接着把c移到b前面,这样往复操作
老规矩,上步骤1.---a-----cb--------
2.---a----bc---------
3.---a---cb----------
4.---a--bc-----------
5.---a-cb------------
6.---abc-------------
所以我们只需找出b-a和c-b的两个间隔谁更大再减1即可
'''print(max(lis[1]-lis[0]-1,lis[2]-lis[1]-1))
1683. 困牛放牧(分类讨论)相关推荐
- 分类讨论 ---- 2020 icpc 上海 Walker (二分 or 思维分类讨论)
题目链接 题目大意: 就是两个人在坐标轴上面,有起始的坐标p1,p2p1,p2p1,p2,和速度v1,v2v1,v2v1,v2,问你访问完这长度为nnn的数轴最短时间是多少? 解题思路: 大佬有直接二 ...
- CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...
- Unfair contest 模拟-分类讨论
题意 : 两人比赛,n个裁判,给分范围[1,h][1, h][1,h],去掉s个最高分和t个最低分,给出n - 1个裁判的给分,第n个裁判想让第1个人赢,并且最小化给1的分数a[n]a[n]a[n] ...
- 2020ICPC(上海) - Walker(分类讨论+二分)
题目链接:点击查看 题目大意:在长度为 n 的数轴上给出两个人的初始位置和速度,问使得每个位置至少被一个人走过的时间是多少 题目分析:分类讨论题目,分四种情况讨论即可,设 p1 < p2: p1 ...
- 【UOJ#33】【UR #2】树上GCD(长链剖分/根号分类讨论)
[UOJ#33][UR #2]树上GCD 求解树上两个点到lca的距离的最大公约数是k的对数 首先我们很容易就想到莫比乌斯反演,那么利用倍数形式,我们只需要求解是i的倍数的对数. 考虑枚举lca,这个 ...
- uoj#246. 【UER #7】套路(dp+分块?分类讨论?)
题目链接 分析: 目前为止我只能理解dp部分 我就喜欢这种单纯不做作的题目 一看名字就明白了这道题的本质 中二的题目描述 很显然,我们的关键就是求出最小相似度 朴素算法n^4 如果我们现在有一个权值数 ...
- Vasya and Multisets CodeForces - 1051C 模拟|分类讨论
题意:把数组分成两个集合 每个集合中元素数量为1的个数相同(此个数可以是0) 分析: 这类问题就是要各种可能情况考虑到 然后分类讨论 完整地正确分类就AC 否则gg 如果数量为 ...
- P3842 [TJOI2007]线段(线性dp,分类讨论)
P3842 [TJOI2007]线段 题意 [TJOI2007]线段 题目描述 在一个 n×nn \times nn×n 的平面上,在每一行中有一条线段,第 iii 行的线段的左端点是(i,Li)(i ...
- HDU 6627 equation(模拟,分类讨论)
题意:给你n个ai和bi,给你C,求解方程: 分析:初中数学,分类讨论破除绝对值符号.每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一 ...
最新文章
- LeetCode简单题之设计 Goal 解析器
- django中聚合aggregate和annotate GROUP BY的使用方法
- Photoshop CC2019软件安装教程
- 1004 Counting Leaves (30 分)【难度: 中 / 知识点: 树的遍历】
- stream的filter用法
- 使用oauth2.0自动获取用户信息
- [Leetcode][第93题][JAVA][复原IP地址][剪枝][回溯]
- 移远ec20驱动_移远通信Cat 1产品天团迎来新成员,引爆中速连接市场
- 【写作技巧】绪论写作要点
- 基于docker的spark-hadoop分布式集群之二: 环境测试
- fanuc换刀宏程序详解_FANUC宏程序使用举例
- AD10利用SMART PDF打印PCB文件(供华龙焊板子参考)
- HC05蓝牙模块修改相关配置
- 阿里中间件seata源码剖析七:saga模式实现
- 华三(H3C) H3C5820V2 交换机IOS升级
- 超级账本(关键概念)
- 【音频】削波失真(爆音)问题定位与解决
- 2020iPS细胞研究进展综述
- Android 11.0 充电指示灯红绿显示简单客制化
- 毕业论文_页眉+页码