LA 3635

2024-01-28 15:38
文章标签 la 3635

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

题干:

大意是f+1个人来分n个圆形派(每个的大小不一定相同)。每个人必须分得一整块,而且每个人分得的面积相同。求每个人分得的最大面积是多少。

分析:

看了看书上的分析,就是采用二分法,查找到合适的面积x,使得问题转化为“能否可以让每人得到一块x的派”。

代码:

#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
const int maxn = 10010;
double num[maxn];
int n,f;
const double PI = acos(-1.0);bool ok(double m)//判断是否满足面积为x的时候,有足够的派分给f+1个人
{int sum = 0;for(int i = 0;i < n;i++){sum += floor(num[i] / m);}return sum >= (f + 1);
}int main()
{int T;cin>>T;while(T--){memset(num,0,sizeof(num));scanf("%d%d",&n,&f);int x;double maxa = -1;for(int i = 0;i < n;i++){cin >> x;num[i] = PI * x * x;maxa = max(maxa,num[i]);}double mina = 0;while(maxa - mina > 1e-5){double M = (maxa + mina) / 2;if(ok(M))mina = M;elsemaxa = M;}printf("%.4lf\n",mina);}return 0;
}


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



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

相关文章

La-Z-Boy 标签制作注意事项

在制作标签之前,供应商需要通过EDI向La-Z-Boy发送提前发货通知(ASN)。ASN中的每个明细行将会至少对应一个运输编号(shipment ID),这个信息将会被体现在运输标签上,和标签上的条形码一起,用于La-Z-Boy收货。 供应商必须确保其装箱单以及发票中的信息能够对应上该批次货物的运输标签以及相关运输编号。供应商可以在La-Z-Boy提供的标签文档中,找到La-Z-Boy EDI部

Android 解决 No static method in class La/a/a/a; or its super classes

错误堆栈: Process: com.chaozh.iReader, PID: 24217java.lang.NoSuchMethodError: No static method getDrawable(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable; in class La/a/a/a; or its super

qnx /var/log/la_gvm.txt 系统日志

qnx /var/log/la_gvm.txt 系统日志 /var/log/la_gvm.txt 是 QNX 操作系统中一个特定的日志文件,通常用于记录与 LA (Loadable Module) 或 GVM (Global Virtual Memory) 相关的信息。这个文件可以帮助系统管理员或开发者诊断与系统内存管理和模块加载相关的问题。 关键点解释: QNX: QNX 是一款实时操作系统

网络(Network,Seoul 2007,LA 3902)

题目地址:https://icpcarchive.ecs.baylor.edu/external/39/3902.html #include<iostream>#include<cstring>#include<vector>#include<algorithm>using namespace std;const int maxn=1000+10;vector<int> gr[ma

HDU 3635 Dragon Balls(带权并查集)

题目地址:HDU 3635 加权并查集水题。 用num数组维护该城市有多少龙珠,用times数组维护每个龙珠运输了多少次。num数组在合并的时候维护。times数组由于每个都不一样,所以要在找根的时候递归来全部维护。 最终,x龙珠所在的城市就是x节点所在的根,x结点所在的跟的num数组值是该城市的龙珠数。times[x]为该龙珠运输了多少次。 代码如下: #include <iost

UVa 1362(LA 3516) Exploring Pyramids

依旧是《训练指南》上的一道例题。思路大致相同,即设有一个序列S(i),S(i+1),S(i+2)...S(j),d[i,j]为所求的解。当S(i)==S(k),i<k<=j 时,说明在k回到根,那么S(i+1)...S(k-1)构成一棵独立的子树(当然也可能并不是子树)。那么d[i,j]就要加上d[i+1,k-1]*d[k,j],不断递增k,每遇到一个k,d[i,j]+=d[i

LA 3211 Now or later / 2-SAT

每架飞机只能在E L 这2个时间点降落 每2架并且降落的时间间隔必须大于等于p才算安全 目标使p尽量大 二分时间间隔 做2-SAT 有解说明可行 xi = true 表示选择E  false 选择L 如果 abs(Ei - Ej) < p (p 是当前二分到的值) 那么 1.选择了Ei 必须选择Lj 2.选择了Ej 必须选择Li 建图 上模版 #include <cstdio>#in

LA 3641 Leonardo's Notebook / 置换

给出26个大写字母组成 字符串B问是否存在一个置换A使得A^2 = B 书上的证明结论 2个长度为n的相同循环相乘 n为奇数时结果为1个长度为n的循环 n为偶数时分裂成2个长度为n/2的循环 倒过来 对于一个长度为n为奇数的循环B都能找到一个长度为n的循环A使得A^2 = B 对应任意2个长度为n的不相交循环B,C 都能找到一个长度为2n的循环A 使得A^2 = BC 所以对于B=(1,

LA 2965 Jurassic Remains / 中途相遇法

求尽量多的字符串 每种大写字母出现偶数次 每个字符串可以看成一个长度为26 出现奇数次对应位置为1 偶数为0 就是求一些字符串 他们的异或为0 n最大为24 2^24超时 可以枚举前一半n/2所以的子集 存在map里 然后枚举后一半看是否有和它相同的 相同的异或就为0 枚举一半时间可以接受 #include <cstdio>#include <cstring>#include

LA 3905 Meteor / 区间扫描

求哪一时刻 框框里的点最多 每个点在做运动(在边框上不算) 求出每个点经过框框的区间 在2维坐标系以x表示 是开区间 因为区间边上不算 假设有一条竖线从左到右扫描过去 也就是求哪一时刻扫描线相交的区间最多 可以设cnt = 0每遇到左区间++右区间--求最大的cnt 然后一个区间右端点与一个区间的左区间相同 要先算右区间因为是开区间 书上的代码 #include <cstdio>#i