bzoj4109: [Wf2015]Cutting Cheese
Description
Input
第一行包含两个整数n,s,表示奶酪有n个小空,要切成s片(0≤n≤10000,1≤s≤100)
Output
从边界z=0依次输出每片的厚度(单位:毫米),输出答案与标准答案的相对误差或绝对误差不超过1e-6。
二分答案,由于球互不相交所以体积很好算,不完整的球体积用定积分可以推出公式,完整的用球的体积公式
#include<cstdio>
#include<cmath>
typedef long double ld;
const ld pi=acos(-.);
int n,s;
ld zs[],rs[],ps[];
ld V=;
ld get(ld x){
ld a=x*;
for(int i=;i<n;i++)if(zs[i]+rs[i]<=x){
a-=rs[i]*rs[i]*rs[i]*(./.*pi);
}else if(zs[i]-rs[i]<x){
ld z=x-zs[i];
a-=./.*pi*rs[i]*rs[i]*rs[i]+pi*(rs[i]*rs[i]*z-z*z*z/.);
}
return a;
}
ld cal(ld V){
ld L=,R=,M;
while(L+1e-<R){
M=(L+R)*.;
if(get(M)<V)L=M;
else R=M;
}
return L;
}
ld cals(ld x){
ld a=;
for(int i=;i<n;i++)if(zs[i]+rs[i]>=x&&zs[i]-rs[i]<=x){
ld z=x-zs[i];
a-=pi*(rs[i]*rs[i]-z*z);
}
return a;
}
int main(){
scanf("%d%d",&n,&s);
for(int i=,x;i<n;i++){
scanf("%d",&x);
rs[i]=x*0.001;
scanf("%d",&x);
scanf("%d",&x);
scanf("%d",&x);
zs[i]=x*0.001;
V-=rs[i]*rs[i]*rs[i]*(./.*pi);
}
ps[]=;
for(int i=;i<=s;i++)ps[i]=cal(i*V/s);
for(int i=;i<=s;i++)printf("%.9Lf\n",ps[i]-ps[i-]);
return ;
}
bzoj4109: [Wf2015]Cutting Cheese的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ4115 : [Wf2015]Tile Cutting
设一种方案里三角形上三个点的坐标分别为$(0,0),(-a,b),(c,d)$,则得到的平行四边形的面积为$ac+bd$. 设$d(n)$为$n$的约数个数,$D$为$d$的生成函数,则答案的生成函数 ...
- CF 371B Fox Dividing Cheese[数论]
B. Fox Dividing Cheese time limit per test 1 second memory limit per test 256 megabytes input standa ...
- hdu 1078 FatMouse and Cheese
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- [ACM_几何] Metal Cutting(POJ1514)半平面割与全排暴力切割方案
Description In order to build a ship to travel to Eindhoven, The Netherlands, various sheet metal pa ...
- 贪心 Codeforces Round #300 A Cutting Banner
题目传送门 /* 贪心水题:首先,最少的个数为n最大的一位数字mx,因为需要用1累加得到mx, 接下来mx次循环,若是0,输出0:若是1,输出1,s[j]--: 注意:之前的0的要忽略 */ #inc ...
- 水题 Codeforces Round #300 A Cutting Banner
题目传送门 /* 水题:一开始看错题意,以为是任意切割,DFS来做:结果只是在中间切出一段来 判断是否余下的是 "CODEFORCES" :) */ #include <cs ...
- HDU 1078 FatMouse and Cheese(记忆化搜索)
FatMouse and Cheese Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Othe ...
- ZOJ 1107 FatMouse and Cheese
原题链接 题目大意:FM在一个街道n*n街道的(0,0)点,在每个网格里放着cheese,他要尽可能多的吃这些cheese.有两个规则:1)他跑的总距离不能超过k步:2)下一个节点的cheese的块数 ...
随机推荐
- Java 有理数类 分数类 Rational类的设计与实现
要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等. package chapter14; public class Rational e ...
- Linux之更好的使用Bash
http://www.awolau.com/linux/start-bash.html#more 接触过Linux的童鞋肯定会知道,在Linux操作系统环境下,命令行操作有时候给我们带来极大的帮助,对 ...
- Sql 2000丢失sa 密码,重置sa密码
重置密码需要勾选一个授权 在企业管理器中-->服务器设置——>勾选“运行对系统目录直接进行修改” 勾选后就可以重置密码了. /////////////////// 详细: http://w ...
- iOS中计算文件夹中文件大小
通常用于删除缓存的时,计算缓存大小 //单个文件的大小 - (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manage ...
- HDU 5945 维护一个单调队列 dp
Fxx and game Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Tot ...
- my Highcharts
1. a=a || {}; 意义:如果a具有真值(不是undefined,null,NAN,false,0中的任意一种),则这个a可以被使用,否则将a定义为一个空的object对象{} 2. a | ...
- 51nod 最大子矩阵和(动态规划)
最大子矩阵和 一个M*N的矩阵,矩阵中有一些整数(有正有负),找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 输入 第1行:M和N,中间用空格隔开(2 <= M,N ...
- CodeForces 558A
Description Amr lives in Lala Land. Lala Land is a very beautiful country that is located on a coord ...
- Text 绑定
Text绑定 目的 Text绑定主要是让DOM元素显示参数值. 通常情况下,该绑定在<span>和<em>这样的元素上非常有用,而实际上你可以绑定任何元素. 示例 123456 ...
- 【转】iOS websocket 及时通讯实现
原文网址:http://blog.csdn.net/manyxh/article/details/48196209 2015-09-03 by 木易哥哥 开发一个类似QQ.微信的即时IM聊天功能,做到 ...