题目链接

有N条线段,要切K刀,使得最长的线段尽量短。在最佳切割的条件下,切完之后最长的那根绳子是多长。

方法一:贪心

每次切的那一刀必然是最长的那条线段,用优先队列,每次往最长的那条线段上切一刀

方法二:二分

假设切完之后最长的绳子长度是x,那么可以求出切多少刀来。如果刀数大于K,说明最长的绳子长度小于x。依次法可以二分答案。

import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;public class Main {
class Node {double dis;int cnt;double per;Node(double dis, int cnt) {this.dis = dis;this.cnt = cnt;this.per = dis / cnt;}void update(int cnt) {this.cnt = cnt;this.per = dis / cnt;}
}Main() {Scanner cin = new Scanner(System.in);int n = cin.nextInt(), m = cin.nextInt(), k = cin.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) a[i] = cin.nextInt();Arrays.sort(a);Node nodes[] = new Node[n - 1];for (int i = 0; i < nodes.length; i++) {nodes[i] = new Node(a[i + 1] - a[i], 1);}PriorityQueue<Node> q = new PriorityQueue<>(Comparator.comparing(x -> -x.per));q.addAll(Arrays.asList(nodes));int left = k;while (!q.isEmpty() && left > 0) {Node now = q.poll();now.update(now.cnt + 1);left--;q.add(now);}double ans = 0;for (Node i : nodes) {ans = Math.max(ans, i.per);}System.out.printf("%.1f", ans);
}public static void main(String[] args) {new Main();
}
}

转载于:https://www.cnblogs.com/weiyinfu/p/9504983.html

hihocoder216周:贪心或二分相关推荐

  1. 算法训练一(贪心、二分)(含解题思路)(上)

    目录 7-1最少失约(贪心) AC代码: 7-2删数问题(贪心) 7-3区间覆盖(贪心) AC代码: 7-7加油站之最小加油次数(贪心+优先队列) AC代码: 7-8求解删数问题(贪心) AC代码: ...

  2. 算法训练一(贪心、二分)(含解题思路)(下)

    目录 7-15种树(贪心) AC代码: 7-16会场安排问题(贪心) AC代码: 7-17最优合并问题(贪心) AC代码: 7-18简简单单的数学题(位运算 + 哈希表) AC代码: 7-19h148 ...

  3. POJ3122贪心或者二分(分蛋糕)

    题意:        m+1个人来分n个蛋糕,每个人分到的蛋糕数必须一样而且还必须是同一个蛋糕上的,问每个人最多分多少蛋糕? 思路:      能想到的方法有两种,一个是直接贪心,另一个就是二分,这个 ...

  4. Asia Yokohama Regional Contest 2018 K题 - Sixth Sense(思维加贪心加二分)

    https://codeforces.com/gym/102082 题意 两个人玩n轮游戏,每次两个人各取一个数,并且已知对手的取数顺序,如果你取的数比他大就算赢一轮,求能赢最多轮次的取法,如果有多种 ...

  5. F. Gourmet and Banquet(贪心加二分求值)

    题目链接:http://codeforces.com/problemset/problem/589/F A gourmet came into the banquet hall, where the ...

  6. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  7. CF1579G - Minimal Coverage(DP,贪心,二分)

    文章目录 CF1579G - Minimal Coverage 题目描述 分析 做法1:DP 做法2:贪心(bitset优化+二分 CF1579G - Minimal Coverage 题目描述 给出 ...

  8. 20行代码AC_ 习题8-1 Bin Packing UVA - 1149(贪心+简单二分解析)

    励志用少的代码做高效表达 题意 给定N个物品的中联L1,背包的容量M,同时要求每个背包最多装两个物品,求至少要多少个背包才能装下所有的物品. 解题过程 第一次接触背包类问题. 最初的思路是降序排序,i ...

  9. 【hihocoder - offer编程练习赛60 A】hohahola(贪心,二分)

    题干: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 有一种叫作hohahola的饮料,售价是X元一瓶.小Hi非常喜欢这种饮料,但是他现在身无分文. 不过小Hi有N张优 ...

最新文章

  1. MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述
  2. 使用Java让android手机自动执行重复重启
  3. pythoncsv数据类型_pandas读取CSV文件时查看修改各列的数据类型格式
  4. Netty简单样例分析[转]
  5. 2021年中国超轻型直升机市场趋势报告、技术动态创新及2027年市场预测
  6. 负载均衡 一直跑一个服务器_终于把服务器负载均衡和客户端负载均衡讲清楚了...
  7. vue父组件变量传递子组件_Vue2.x中的父组件数据传递至子组件
  8. 外贸软件如何提升出口流程管理效率
  9. 三菱PLC与触摸屏的连接不通解决方法
  10. VLAN链路类型和接口类型
  11. 数据结构和算法-查找算法之黄金分割查找法
  12. Android屏幕区域划分及尺寸获取
  13. Java SimpleDateFormat.setLenient(boolean lenient)方法使用
  14. 二十一世纪大学英语读写教程学习笔记(原文)——7 - I Became Her Target(我成了她的靶子)
  15. 搭建mysql 主从复制The slave I/O thread stops because master and slave have equal MySQL server UUIDs
  16. 基于ssm框架实现网上购物管理系统【附项目源码+论文说明】
  17. 该文件没有与之关联的应用...的解决方法
  18. .NET Core 3.1部署到Docker后使用Nginx代理
  19. 一段代码完成所有分享功能,分分钟搞定分享功能
  20. 一个LED16X16点阵屏

热门文章

  1. MooFest POJ - 1990
  2. [LuoguP1352][FJSC]没有上司的舞会
  3. python collection 和 heapq 模块使用说明
  4. 【Codeforces Round #442 (Div. 2) C】Slava and tanks
  5. 微软版UnityVs横空出世,究竟是谁成就了谁?
  6. 九尾之火---算法生成的动画图像
  7. 【嵌入式】非操作系统下GPIO口控制器及LED灯编程
  8. Linux操作Oracle(4)——查看oracle后台进程的方法【windows系统/Linux系统】
  9. 一个成功的BI项目实施需要注意哪些?
  10. 数据/方法论固然重要,但人为分析更有价值!