SCAU 10690 分面包
2024-08-27 09:16:43
10690 分面包
时间限制:1000MS 内存限制:65535K
题型: 编程题 语言: 无限制
Description
在大一的时候,XCC还在stu union打酱油~~~~和十三还有奶子他们去外面吃吃喝喝是常有的事。
大家都知道空腹喝酒是有害肚子滴,所以呢,要买一些面包来下酒。不过我们有个习惯,
就是所有的n个人,每个人分得的面包必须长度相等(长度相等的面包的量是一样的),
同时捏~给每个人分面包时,分得的小面包必须是来自同一块面包的,即不能把两个不同面包各切一部分下来凑合成一份面包来分。
现在一起来的有n个人,买了m个面包,求每人分得的最长面包长度。
输入格式
第一行是人数 n 和面包数目 m (3<= n <= 16 , 1 <= m <= 100),第二行 m 个数字表示 m 个面包的长度 L ,均为整数( 1 <= L <= 1000000)
输出格式
每人分得的最长面包长度,保留2位小数
输入样例
3 3
3 3 3
输出样例
3.00
提示
注意题目描述 //scau_Joseph 注:每个人只能有一条面包,而一条面包可以分给若干个人,所以一个人手中的面包可以是不完整的(即被切过),最终每个人的面包是相同长度,剩余的不管
来源
scau_acm
作者
scau_acm
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm> using namespace std; int store[]; int main()
{
// freopen("input.txt", "r", stdin);
int n, m, cnt = , len;
double res = ;
scanf("%d%d", &n, &m);
memset(store, , sizeof(store));
for(int i=; i<m; ++i)
{
scanf("%d", &len);
store[cnt++] = len;
}
sort(store, store+cnt);
double mid, maxn = store[cnt-], minn = ;
int sum = , flag = ;
mid = (minn + maxn)/;
while(maxn - minn > 0.000001)
{
mid = (minn + maxn)/;
sum = ;
for(int i=cnt-; i>=; --i)
{
int temp = (int)floor(1.0*store[i]/mid);
sum += temp;
if(sum >= n || store[i] < mid) break;
}
if(sum >=n) minn = mid;
else maxn = mid;
}
printf("%.2lf\n", mid); return ;
}
最新文章
- 排序算法练习--JAVA(插入、直接选择、冒泡、快速排序、非递归快速排序)
- Java-->;多线程复制(文件指针)
- Reservoir Sampling - 蓄水池抽样
- jquery.cookie.js使用介绍
- Java之跳出多重循环
- Struts2与ajax整合之缺点
- Python学习之路——函数
- CentOS 7 网卡命名修改为ethx格式
- [转帖] Linux 时间参数
- Redis sortedset实现元素自动过期
- Node.js面试题之2017
- Scala依赖注入
- SpringCloud Feign
- VC++界面编程之--仿Facebook透明登录窗体
- js 锚点定位【转】
- 【函数封装】javascript判断移动端操作系统为android 或 ios 或 iphoneX
- Python+Selenium学习--上传文件
- Description Resource	Path	LocationType Java compiler level does not match the version of the instal
- java jar 自启动 centos7 systemctl
- JavaScript基础-DAY2