首页 > 其他分享 >POJ - 3296

POJ - 3296

时间:2024-09-04 19:36:19浏览次数:10  
标签:vb vc double vr POJ vw 3296 first

对于操作来说,第一次是最重要的,后来每次倒入水量是相同的。
这是因为后面的总液体量不变的情况下,
ans=第一次后液体浓度*后几次液体浓度的积
所以由1/v^2 < 1/v^2 - x^2(v,x>0),易得后几次水量相同
那么,对于第一次来说可以用三分法来求极值。
代码:

#include <bits/stdc++.h>
using namespace std;
double vb,vw, vr, vc;
int k;
double does(double first) {
	double temp=min(vr,vw+first)*(vw/(vw+first));
	double v=vb-first,last=vw+first;
	if(k<=1)return temp;
	v/=(k-1);
	if(vr+v>vc)v=vc-vr;
	for(int i=1; i<k; i++) {
		temp=min(vr,last+v)*(temp/(min(vr,last)+v));
		last=min(vr,last+v);
	}
	return temp;
}

int main() {
	double l,r,lmid,rmid,leftover,ans1,ans2,ansa;
	while(scanf("%d",&k),k) {
		scanf("%lf%lf%lf%lf",&vb,&vw,&vr,&vc);
		if(vb + vw < vr) {
			puts("0");
			continue;
		}
		l=0.0;
		r=vb;
		leftover=vb-(k-1)*(vc-vr);
		if(l<leftover)l=leftover;
		if(r+vw>vc)r=vc-vw;
		while(r-l>1e-8) {
			lmid=(l+r)/2;
			rmid=(lmid+r)/2;
			if(does(lmid)<=does(rmid))r=rmid;
			else l=lmid;
		}
		printf("%d %.2f",k,r);
		if(k>1) {
			ansa=(vb-r)/(k-1);
			ansa=min(vc-vr,ansa);
			for(int i=1; i<k; i++) {
				printf(" %.2f",ansa);
			}
		}
		puts("");
	}
	return 0;
}

标签:vb,vc,double,vr,POJ,vw,3296,first
From: https://www.cnblogs.com/zan-mei-tai-yang/p/18397234

相关文章

  • POJ-1066
    题解告诉我:大意:在一个矩形区域内,有n条线段,线段的端点是在矩形边上的,有一个特殊点,问从这个点到矩形边的最少经过的线段条数最少的书目,穿越只能在中点穿越思路:需要巧妙的转换一下这个问题,因为从一个点到终点不可能“绕过”围墙,只能穿过去,所以门是否开在中点是无所谓的,只要求四周线......
  • POJ - 3318
    他说:O(n^3)是过不了滴一搜……6代码和题解没有实质区别:#include<cstdio>#include<ctime>#include<cstdlib>usingnamespacestd;inta[505][505],b[505][505],c[505][505];intmain(){ srand(time(NULL)); intn; ios::sync_with_stdio(0); cin.tie(0); while(cin......
  • POJ - 1765
    第一次做扫描线挺好的#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;structppx{ intl,r; doubleleft,right; doublelen; intcover;//记录重边情况}tree[4*200+10];doubley[200+10];//对应的序号装对应的边structpp{ doublex......
  • POJ - 1870
    先把蜂巢快递柜画出来:__________/\__/\__/\__/\____/\__/\__/53\__/\__/\__/\__/\__/52\__/54\__/\__/\\__/\__/51\__/31\__/55\__/\__//\__/50\__/30\__/32\__/56\__/\\__/49\__/29\__......
  • POJ - 3318
    他说:O(n^3)是过不了滴一搜……6代码和题解没有实质区别:#include<cstdio>#include<ctime>#include<cstdlib>usingnamespacestd;inta[505][505],b[505][505],c[505][505];intmain(){ srand(time(NULL)); intn; ios::sync_with_stdio(0); cin.tie(0); while(cin......
  • POJ - 2976
    原来是二分谁对平均分贡献大选谁界限<0.001,100次足矣#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>usingnamespacestd;constintmaxn=1010;intn,k;doublemid;structNode{ doublea,b;}w[maxn];boolcmp(Nodex,Nodey......
  • POJ - 3071
    概率题。本蒟蒻不会概率dp,于是手搓枚举。反正爆枚够用后记:SadBee的想法考虑维护每队对上上一队/下一队的胜率。只有两队最简单,用1乘即可那多队呢?不如看成两队。见:P(1胜)=P(1战胜2)P(3战胜4)P(1战胜3)+P(1战胜2)P(4战胜3)P(1战胜4)P(2胜)=......
  • POJ1321-棋盘问题
    POJ从23号崩了,放弃POJ(也不知是不是有比赛把oj都关了),各大OJLeetcode/PAT各种花里胡哨开会员能数据,它不配正经刷题牛客网招聘多课程广告多我焦虑不想入hdoj和洛谷不错,找了找搜索算法的题目单,之前看过数一巨巨写的知乎:邝斌带你飞专题,无限回忆西安艾教培训,卿俊888上交知乎咨询,科技......
  • TopoJSON格式详解,写入读取TopoJSON示例
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • D40 2-SAT POJ3683 Priest John's Busiest Day
    视频链接:D402-SATPOJ3683PriestJohn'sBusiestDay_哔哩哔哩_bilibili   POJ3683--PriestJohn'sBusiestDay(poj.org)#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;......