[算法刷题题解笔记] 洛谷 P1007 独木桥 [贪心]

news/2024/11/24 8:53:23/

题目链接

  • https://www.luogu.com.cn/problem/P1007

题目大意

  • 有若干个士兵在长度为L的桥上,现在要求所有士兵从桥上下来花费的最小和最大时间,每次士兵只能向左或向右移动一个单位,桥上的坐标为1, 2, 3, …, L,因此士兵需要移动到0或L+1才算离开桥

解题思路

  • 要求所有士兵从桥上下来花费的最小和最大时间
  • 全部离开独木桥的最小时间,就是每个士兵都向离桥边短的方向走
  • 所有士兵的下桥的最小时间为,每个士兵都采取自己下桥花费最小的方案,即计算从左边走或从右边走的时间花费的较小值,然后从中选取出花费时间最大的士兵的时间,就是所有士兵下桥的最小时间
  • 全部士兵下桥的最短时间为每个士兵最小花费(从左边下还是右边下的较小值)的最大值
  • 最大时间就是每个士兵都向离桥边远的方向走,此时离桥边最远的那个士兵耗费的时间就是最大时间
    • 虽然说,假如有 2 个人相向而行在桥上相遇,那么他们 2 个人将无法绕过对方,只能有 1 个人回头下,让另一个人先通过。
    • 但是两个人相遇,回头,可以看成两个人进行了灵魂交换,这样子可以看成两个人都还是按照之前的方向移动
  • 注意:士兵需要移动到0或L+1才算离开桥

解题代码

// package luogu.orange;import java.io.*;/*** ClassName: P1007* Package: luogu.orange* Description:** @Author tcw* @Create 2023-06-08 20:22* @Version 1.0*/
public class Main {// 快读快写private static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));private static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));public static void main(String[] args) {// 读取独木桥的长度int l = readInt();// 读取桥上士兵的个数int n = readInt();// 全部离开独木桥的最小时间,就是每个士兵都向离桥边短的方向走// 此时最耗时的就是最中间的那个士兵// 此时最短时间即最中间的那个士兵离开的时间// 最大时间就是每个士兵都向离桥边远的方向走// 此时离桥边最远的那个士兵耗费的时间就是最大时间// 初始化为0,没有士兵需要下,花费时间为0int max = 0; // 最大时间int min = 0; // 最小时间for (int i = 0; i < n; i++) {// 一边输入一边判断int location = readInt();// 当前士兵离开桥的两个时间,花费大的和小的// 桥上的坐标 1, 2, 3, ..., L// 士兵移动到0或L+1才算离开桥// 所以右边边界L还在桥上,因此l - location需要+1int greaterTime = Math.max(location, l - location + 1);int letterTime = Math.min(location, l - location + 1);// 更新答案max = Math.max(greaterTime, max);// 注意全部士兵下桥的最短时间为每个士兵最小花费(从左边下还是右边下的较小值)的最大值min = Math.max(letterTime, min);}// 输出out.print((min) + " " + (max));out.flush();}// 读入整数private static int readInt() {int in = Integer.MIN_VALUE;try {st.nextToken();in = (int) st.nval;} catch (IOException e) {e.printStackTrace();}return in;}}

http://www.ppmy.cn/news/283052.html

相关文章

吴恩达MachineLearningYearning《MachineLearningYearning》学习笔记

如果有需要pdf资源的可以私聊我~ 学习笔记&#xff1a; 1.监督学习算法主要包括线性回归&#xff08;linear regression&#xff09;、对数几率回归&#xff08;logistic regression&#xff0c;又译作逻辑回归、逻辑斯蒂回归&#xff09;和神经网络&#xff08;neural networ…

门槛理论

门槛理论 众所周知&#xff0c;TCL集团公司是中国电子工业的五强之一。据1999年的统计&#xff0c;TCL连续10年电话销量居全国第一&#xff0c;彩电销量连续3年居全国第三。1998年工业产值140亿元&#xff0c;销售收入98亿元&#xff0c;利税8亿多元。然而&#xff0c;这样一个…

基于SIP协议的IP电话增值业务实现技术

基于SIP协议的IP电话增值业务实现技术 王瑜,乐正友 &#xff08;清华大学电子工程系&#xff0c;北京 100084&#xff09; 摘 要&#xff1a;讨论了SIP协议以及基于SIP协议的IP电话增值业务实现技术&#xff0c;并对SIP CGI、CPL、SIP Serv-lets、JAIN APIs等几种SIP编程技术…

什么是集团电话

什么是集团电话&#xff1f; 顾名思义它就是把若干部独立的电话机集合起来形成一个“集体”&#xff08;起到统一管理的作用&#xff09;&#xff0c;共用外线并且具有内部免费通话功能的电话系统。也可以说是一种具有特殊用途的用户小交换机&#xff0c;适用于写字楼中的大小公…

蓝桥杯单片机定时器不够用?PCA大力助你测距超声波!

在国赛的练习中遇到了定时器不够用的问题&#xff0c;也在网上有查阅到许多蓝桥杯单片机的用PCA定时器测距超声波的例子&#xff0c;但在移植实践运用了几个人的代码后总是各种各样的的问题不好用&#xff0c;因此深感有必要自己好好研究下&#xff0c;终于在一番摸爬中写出了用…

三层交换技术解析

简单地说&#xff0c;三层交换技术就是&#xff1a;二层交换技术&#xff0b;三层转发技术。它解决了局域网中网段划分之后&#xff0c;网段中子网必须依赖路由器进行管理的局面&#xff0c;解决了传统路由器低速、复杂所造成的网络瓶颈问题。 什么是三层交换 三层交换&#xf…

华为动力学:狼文化与灰色领导思想

就在前不久&#xff0c;华为相关人士透露&#xff0c;华为计划2 0 0 9 年上半年分别推出采用Google Android开放操作平台和诺基亚Symbian操作系统的智能手机。 有评论说这是一个意味深长的转变。对智能手机的投入&#xff0c;是迫不得已还是看到新的机会&#xff1f;又要如何参…

:中兴通讯为何成功

本文是在教授的指导下&#xff0c;由林凡、梁兆丰、莫颂淇、黄尹珊和吴颖茵所完 中兴通讯与巨龙通信、大唐电信及深圳华为&#xff0c;共同被称为“巨大中华”&#xff0c;是中国通讯业企业的代名词。如今&#xff0c;中兴、华为跑出&#xff0c;成为国内通讯业中的老大&#…