7-27 Codeforces Round #499 (Div. 2)
Posted llbingg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7-27 Codeforces Round #499 (Div. 2)相关的知识,希望对你有一定的参考价值。
C. Fly
链接:http://codeforces.com/group/1EzrFFyOc0/contest/1011/problem/C
题型:binary search 、math。
题意:总共有n个星球,飞船从地球起飞经过n-2个星球(在每个星球上做降落、起飞的动作)到达火星,在火星上同样降落起飞,然后直接返回地球做降落。每个星球起飞所需的燃料质量为ai,降落所需要的燃料质量为bi。飞船本身载重为m,附加燃料质量为所求值。问至少需要多少质量的燃料使得地球能做完整的往返运动,精度为1e-6。
题解:可以用二分也可以不用二分,做这道题之前还不会二分精度,太懒了啥都没学。不用二分就是从回到地球往前推,抓住此时的飞船质量是m。
式子就是 ans=ans*c[i]*1.0/(c[i]-1),c[i]存的是起飞降落的燃料,起飞和降落间隔着存。c[i]<=-1则无解。
二分精度就拿同学的代码看了一下。
/*math*/
#include <iostream> #include <string.h> #include <algorithm> #include <stdio.h> #include <string> #include <map> #include <vector> #include <cmath> #include <set> #define ll long long #define PI 3.1415926535 #define AC ios::sync_with_stdio(0) using namespace std; const int inf=1010; /*bool cmp(const vector<pair<int,int> >& a,const vector<pair<int,int> >& b) { return a.second<b.second; }*/ //map<int,int>mp; //vector<pair<int,int> >vec; //map<int,int>mp2; double a[inf]; double b[inf]; double c[3000]; int main() { ios::sync_with_stdio(0); ll n,m; cin>>n; cin>>m; for(int i=1;i<=n;i++) { cin>>a[i]; //a[i]*=1e10; } for(int i=1;i<=n;i++) { cin>>b[i]; //b[i]*=1e10; } int t=0; for(int i=1;i<n;i++) { c[++t]=a[i]; c[++t]=b[i+1]; } c[++t]=a[n]; c[++t]=b[1]; double ans=m; for(int i=t;i>=1;i--) { if(c[i]<=1) { cout<<-1; return 0; } ans=ans*c[i]*1.0/(c[i]-1); } printf("%.8f",ans-m); }
/*binary search*/ #include<cstdio> double a[1010]; double b[1010]; int main(void) { int n; double m; scanf("%d%lf ",&n,&m); for(int i=0;i<n;i++) scanf("%lf",&a[i]); for(int i=0;i<n;i++) scanf("%lf",&b[i]); double l=0,r=1e9+10; while(r-l>=0.0000001&&l<=1e9) // Attention { double mid=(r+l)/2; double sum=m+mid; double k=0,t=0; int x=0,y=1; while(1) { sum-=sum/a[x]; sum-=sum/b[y]; if(x==n-1) { break; } x++; y++; if(y==n) y=0; } if(sum>m) r=mid; else if(sum<m) l=mid; else { r=mid; // l 或者 r break; } } if(l>1e9) printf("-1 "); else printf("%f ",r); // l 或者 r 或者 mid return 0; }
以上是关于7-27 Codeforces Round #499 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章
[Codeforces Round49F] Session in BSU
Educational Codeforces Round 49 (Rated for Div. 2) ABCD
Educational Codeforces Round 49(A,B,C,D)
Educational Codeforces Round 49 (Rated for Div. 2)
Codeforces Beta Round #49 (Div. 2) A-D
Educational Codeforces Round 49 E. Inverse Coloring(思维,差分,dp)