P3853 [TJOI2007] 路标设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
以后解析在代码里,这样大家看的比较好。
本题总体思路是二分答案哟。
本题目的注意点就在左边界限不为0,从1开始
-
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.math.BigInteger;
- import java.math.MathContext;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.LinkedList;
- import java.util.PriorityQueue;
- import java.util.Scanner;
- import java.util.TreeMap;
- import java.util.TreeSet;
- public class Main {
- public static void main(String[] args) throws NumberFormatException, IOException {
- Scanner sc=new Scanner(System.in);
- BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
- String[] aStrings=br.readLine().split(" ");
- bb=Integer.parseInt(aStrings[0]);
- int a=Integer.parseInt(aStrings[1]);
- aa=new int[a];
- dd=a;
- cc=Integer.parseInt(aStrings[2]);
- String[] bStrings=br.readLine().split(" ");
- int b;
- aa[b]=Integer.parseInt(bStrings[b]);
- }
- int c=1;//左边界限从1开始,因为如果我们每个坐标都放满了路标,那么相岭的两个路标的距离就是1,不可可能到达0。如果执意要从0开始的化,那么就要改变我们设置的d=d/a在函数的这一块加个a!=0的特判了
- int d=bb;
- int answer=0;
- while(c<=d) {
- int mid=(c+d)>>>1;
- if(check(mid)==0) {
- c=mid+1;
- }
- else {
- answer=mid;
- d=mid-1;
- }
- }
- System.out.println(answer);
- }
- public static int[] aa;//存储路标的位置
- public static int bb;//总距离
- public static int cc;//可添加的路标的数量
- public static int dd;//最初的路标的数量
- public static int check(int a) {//检验
- int b;
- int c=0;
- for(b=1;b
- if(aa[b]-aa[b-1]>a) {
- int d=aa[b]-aa[b-1];//整除的化就放置整除数加1的路标
- if(d%a==0) {
- d=d/a;
- c=c+(d-1);
- }
- else {
- d=d/a;//不整除就放置整除的路标
- c=c+d;
- }
- }
- if(c>cc) {//放置路标数量大于可放置路标数量,那么最大距离要扩大
- return 0;
- }
- }
- return 1;//最大距离可以减小
- }
- }
-
相关阅读:
媒介易发稿教程,在人民网投稿的指南与技巧
积分商城游戏设置的基本要点
芯片的发展史和具体用途以及结构是什么样的
世微 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