2021-07-06 POJ1064

2024-02-08 00:08
文章标签 2021 06 07 poj1064

本文主要是介绍2021-07-06 POJ1064,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 题目
  • 一、二分查找
  • 二、解
    • 1.代码
    • 2.解
  • 总结


题目

仙境的居民们决定举办一场区域性的节目比赛。评审委员会自愿并承诺组织有史以来最诚实的比赛。决定使用“星形”拓扑为参赛者连接计算机——即将它们全部连接到一个中央集线器。为了组织一场真正诚实的比赛,评审委员会主席下令将所有参赛者均匀地放置在中心周围,距离中心相等。为了购买网线,评审委员会联系了当地的网络解决方案供应商,要求为他们出售指定数量的等长网线。评审委员会希望电缆尽可能长,以使参赛者彼此尽可能远离。公司的电缆主管被指派执行这项任务。他知道库存中每根电缆的长度可达一厘米,而且他可以以厘米的精度切割它们,并被告知他必须切割的碎片长度。但这一次,长度不详,索主完全不解。您将通过编写一个程序来帮助 Cable Master,该程序将确定可以从库存中的电缆中切割出的电缆段的最大可能长度,以获得指定的段数。输入输入文件的第一行包含两个整数 N 和 K,用空格分隔。N (1 = N = 10000) 是库存中的电缆数量,K (1 = K = 10000) 是请求的件数。第一行后面是 N 行,每行一个数字,指定库存中每根电缆的长度(以米为单位)。所有电缆的长度至少为 1 米,最长为 100 公里。输入文件中的所有长度都以厘米精度写入,小数点后正好有两位数字。输出将 Cable Master 可以从库存中的电缆切割以获得请求的件数的最大长度(以米为单位)写入输出文件。该数字必须以厘米精度书写,小数点后恰好有两位数字。如果无法切割所需数量的每件至少一厘米长,则输出文件必须包含单个数字“0.00”(不带引号)。


题意:有N根绳子,它们长度分别为Li。如果从他们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留到小数点后两位。


这题我给出两种方法求解

一、二分查找

二分查找,简单说就是我们玩的数字炸弹里最常用的方法,每找一次分两半,看离最后的答案是大还是小

二、解

1.代码

这道题的代码如下(1):

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include<cmath>
#define INF 0x3f3f3f3fusing namespace std;long long N,K;
const int maxn = 1e6+10;
double L[maxn];bool C(double x)
{int num=0;for(int i=0; i<N; i++){num+=(int) (L[i]/x);}return num>=K;
}int main()
{while(cin>>N>>K){for(int i=0; i<N; i++)scanf("%lf",&L[i]);sort(L,L+N);double lb=0,ub=INF;//INF 0x3f3f3f3f <max_int 2^31for(int i=0; i<100; i++){double mid = (lb + ub)/2;if(C(mid))lb=mid;elseub=mid;}printf("%0.2f\n",floor(ub * 100) /100);}return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;const int N = 1e5 + 100;
int n, s;
int a[N], sum[N];int main() {cin >> n >> s;for(int i=1; i<=n; i++) {cin >> a[i];sum[i] = sum[i-1] + a[i];}int ans = n;for (int i = 1; i <= n; i ++){int pos = upper_bound(a + 1, a + n + 1, sum[i] - s) - a;int len = i - pos + 1;if (len < ans) ans = len;}cout << ans << endl;return 0;	
}

2.解

代码(1):
这份代码主要是用基本的二分查找,
用函数C二分,只要分出的份数大于所需要的份数,则true,否则false,然后再继续往不同的方向二分,变大或变小。

代码(2):
这份代码主要是用前缀和和二分查找,运用algorithm库里的upper_bound找到比第三个形参大的第一个数的下标,用此找到len,判断出answer


总结

这道题对于我来说还是很难理解的,特别是第二份代码,讲解的也不是很到位,还请多多谅解

这篇关于2021-07-06 POJ1064的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689359

相关文章

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

POJ1064二分

n根线,现在要把这n根线切割成k根等长(设长为len)的线,问能切得的最长的len为多少, import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigIntege

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

07 v-if和v-show使用和区别

划重点: v-ifv-show 小葱拌豆腐 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

[SWPUCTF 2021 新生赛]web方向(一到六题) 解题思路,实操解析,解题软件使用,解题方法教程

题目来源 NSSCTF | 在线CTF平台因为热爱,所以长远!NSSCTF平台秉承着开放、自由、共享的精神,欢迎每一个CTFer使用。https://www.nssctf.cn/problem   [SWPUCTF 2021 新生赛]gift_F12 这个题目简单打开后是一个网页  我们一般按F12或者是右键查看源代码。接着我们点击ctrl+f后快速查找,根据题目给的格式我们搜索c

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。