P1577 切绳子 (二分答案Java)
发布日期:2021-05-08 22:12:34 浏览次数:22 分类:精选文章

本文共 897 字,大约阅读时间需要 2 分钟。

P1577 切绳子

题目描述

有 N 条绳子,它们的长度分别为 Li。如果从它们中切割出 K 条长度相同的绳子,这 K 条绳子每条最长能有多长?答案保留到小数点后 2 位(直接舍掉 2 位后的小数)。

输入格式

第一行两个整数 N 和 K,接下来 N 行,描述了每条绳子的长度 Li。

输出格式

切割后每条绳子的最大长度。答案与标准答案误差不超过 0.01 或者相对误差不超过 1% 即可通过。

输入输出样例

输入 #1

4 11
8.02
7.43
4.57
5.39
输出 #1
2.00

解题思路:

二分答案模板题

代码如下:

import java.util.Scanner;public class Main {   	public static void main(String[] args) {   		Scanner sc = new Scanner(System.in);		long n, k, ans = 0, l, r, mid = 0;		long[] a = new long[10010];		double[] b = new double[10010];		double t;		n = sc.nextLong();		k = sc.nextLong();		for (int i = 1; i <= n; i++) {   			b[i] = sc.nextDouble();			a[i] = (long) (b[i] * 100);			ans += a[i];		}		l = 0;		r = ans / k + 1;		while (l < r) {   			mid = (l + r + 1) / 2;			ans = 0;			for (int i = 1; i <= n; i++)				ans += a[i] / mid;			if (ans < k)				r = mid - 1;			else				l = mid;		}		t = r * 1.00 / 100;		System.out.printf("%.2f", t);	}}
上一篇:ASP.NET AJAX---UpdatePanel控件小实例(时间的局部更新&条件更新)
下一篇:ASP.NET 母版页小实例(点击显示文本内容)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年03月23日 17时37分59秒