码农知识堂 - 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. }

  • 相关阅读:
    媒介易发稿教程,在人民网投稿的指南与技巧
    积分商城游戏设置的基本要点
    芯片的发展史和具体用途以及结构是什么样的
    世微 AP2400 宽电压降压恒流驱动IC 过EMC认证线路方案
    Iphone自带的邮箱 每次发完邮件在已发送里会显示重复发送了两封
    Prim 求 MST| INIT: cost[][]耗费矩阵(inf为无穷大);
    【Linux】腾讯云服务器Linux环境搭载
    如何从一个美术变成程序员?
    【从零开始学习 SystemVerilog】3.8、SystemVerilog 控制流—— Tasks(任务)
    事务并发引发的问题
  • 原文地址:https://blog.csdn.net/m0_73862548/article/details/132945738
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号