码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 二分系列之路标设置


    P3853 [TJOI2007] 路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

    以后解析在代码里,这样大家看的比较好。

    本题总体思路是二分答案哟。

    本题目的注意点就在左边界限不为0,从1开始

    1. import java.io.BufferedReader;
    2. import java.io.IOException;
    3. import java.io.InputStreamReader;
    4. import java.io.PrintWriter;
    5. import java.math.BigInteger;
    6. import java.math.MathContext;
    7. import java.util.ArrayList;
    8. import java.util.Arrays;
    9. import java.util.Collections;
    10. import java.util.Comparator;
    11. import java.util.Iterator;
    12. import java.util.LinkedList;
    13. import java.util.PriorityQueue;
    14. import java.util.Scanner;
    15. import java.util.TreeMap;
    16. import java.util.TreeSet;
    17. public class Main {
    18. public static void main(String[] args) throws NumberFormatException, IOException {
    19. Scanner sc=new Scanner(System.in);
    20. BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    21. String[] aStrings=br.readLine().split(" ");
    22. bb=Integer.parseInt(aStrings[0]);
    23. int a=Integer.parseInt(aStrings[1]);
    24. aa=new int[a];
    25. dd=a;
    26. cc=Integer.parseInt(aStrings[2]);
    27. String[] bStrings=br.readLine().split(" ");
    28. int b;
    29. for(b=0;b
    30. aa[b]=Integer.parseInt(bStrings[b]);
    31. }
    32. int c=1;//左边界限从1开始,因为如果我们每个坐标都放满了路标,那么相岭的两个路标的距离就是1,不可可能到达0。如果执意要从0开始的化,那么就要改变我们设置的d=d/a在函数的这一块加个a!=0的特判了
    33. int d=bb;
    34. int answer=0;
    35. while(c<=d) {
    36. int mid=(c+d)>>>1;
    37. if(check(mid)==0) {
    38. c=mid+1;
    39. }
    40. else {
    41. answer=mid;
    42. d=mid-1;
    43. }
    44. }
    45. System.out.println(answer);
    46. }
    47. public static int[] aa;//存储路标的位置
    48. public static int bb;//总距离
    49. public static int cc;//可添加的路标的数量
    50. public static int dd;//最初的路标的数量
    51. public static int check(int a) {//检验
    52. int b;
    53. int c=0;
    54. for(b=1;b
    55. if(aa[b]-aa[b-1]>a) {
    56. int d=aa[b]-aa[b-1];//整除的化就放置整除数加1的路标
    57. if(d%a==0) {
    58. d=d/a;
    59. c=c+(d-1);
    60. }
    61. else {
    62. d=d/a;//不整除就放置整除的路标
    63. c=c+d;
    64. }
    65. }
    66. if(c>cc) {//放置路标数量大于可放置路标数量,那么最大距离要扩大
    67. return 0;
    68. }
    69. }
    70. return 1;//最大距离可以减小
    71. }
    72. }

  • 相关阅读:
    猿创征文|【Typescript】搭建TS的编译环境
    k8s中无法获取到nginx-ingress的客户端真实ip地址x-forwarded-for
    正则表达式基础补充学习
    2023年7月京东打印机行业品牌销售排行榜(京东运营数据分析)
    ESP32 485温湿压、噪声4合1传感器测试
    Linux中top 实时监控系统进程状态
    四种常用的自动化测试框架
    【组成原理 六 存储器类型】
    国内近五年人工智能教育的研究热点及趋势——基于多维尺度和社会网络分析的方法
    使用requests 请求https 报403
  • 原文地址:https://blog.csdn.net/m0_73862548/article/details/132945738
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号