zoukankan      html  css  js  c++  java
  • CF42A

    题意

    给定两个序列 a 和 b。

    序列 a 中的各个数之间的比例可以得出一个 x 。

    当 b 中比例满足 a 中比例,即 (b_1):(b_2):(b_3)…… (=) (a_1):(a_2):(a_3)……时,可以得出一个数 $x * dfrac{b}{a} $。


    分析

    因为这是做汤按照一定比例才能得出一个与 x 成倍数关系的数

    所以我们可以知道,如果有一个数与其他的数不成比例且小于其他数时,整个数列得出的数都会被那个数影响

    所以我们先找出所有的 b/a 里面最小的那个,因为他决定了结果的大小。

    然后让整个数列都以这个最小比例做汤求 x 。

    另外,他给定了锅的大小也就是 x 的上限 v ,所以得出的那个数如果超过 v ,那就要把它赋值成 v 就好了。

    注意:他要求你的数要与他的答案的差值大小不超过十的负四次方,也就是要你至少精确到小数点后四位


    代码

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #define maxn 300050
    #define maxm 1010
    
    using namespace std;
    
    int n;
    double v,a[maxn],b[maxn],x[maxn];
    
    int main(){
    	cin>>n>>v;
    	for(int i=1;i<=n;i++) cin>>a[i]; 
    	for(int i=1;i<=n;i++) cin>>b[i];
    	for(int i=1;i<=n;i++){
    		x[i]=b[i]/a[i];
    	} 
    	sort(x+1,x+n+1);我开了一整个数组来求一个最小值有点浪费,其实可以通过边求边比的方法取;
    	double ans=0.0;
    	for(int i=1;i<=n;i++){
    		ans+=x[1]*a[i];
    	}
    	ans=min(ans,v);
    	printf("%.4lf",ans);
    	return 0;
    }
    

    制作不易,不喜勿喷。

  • 相关阅读:
    Building a flexiable renderer
    Indirect Illumination in mental ray
    我的心情
    Cellular Automata
    Subsurface Scattering in mental ray
    Shader Types in mental ray
    BSP Traversal
    我的渲染器终于达到了MR的速度
    How to handle displacement and motion blur
    说明
  • 原文地址:https://www.cnblogs.com/KnightL/p/13935250.html
Copyright © 2011-2022 走看看