zoukankan      html  css  js  c++  java
  • 洛谷1984 [SDOI2008]烧水问题

    一道找规律

    原题链接

    显然要将烧得的温度最大化利用,即每次都去热传递。
    设水沸腾为(x)
    第一杯直接烧水,需提高(x)
    第二杯先与第一杯进行热传递,这样只需提高(dfrac{x}{2}),是上一杯的(dfrac{1}{2})倍。此时两杯温度为(dfrac{x}{2},x)
    第三杯先与第一杯进行热传递,再与第二杯进行热传递,需提高(x-dfrac{dfrac{frac{x}{2}}{2}+x}{2}=dfrac{3x}{8}),是上一杯的(dfrac{3}{4})倍。此时三杯温度为(dfrac{x}{4},dfrac{5x}{8},x)
    第四杯同理,需提高(x-dfrac{dfrac{dfrac{frac{x}{4}}{2}+dfrac{5x}{8}}{2}+x}{2}=dfrac{5x}{16}),是上一杯的(dfrac{5}{6})倍。
    (cdots)
    即第(n)杯是第(n-1)杯的(dfrac{2 imes(n-1)-1}{2 imes(n-1)})倍。
    其实手算几杯找到规律就好

    #include<cstdio>
    using namespace std;
    int main()
    {
    	int n, i;
    	double s = 100, la = 100;
    	scanf("%d", &n);
    	for (i = 1; i < n; i++)
    	{
    		la *= 1.0*((i << 1) - 1) / (i << 1);
    		s += la;
    	}
    	printf("%.2f", 4200 * s / n);
    	return 0;
    }
    
  • 相关阅读:
    Java 执行
    Java 反射
    Mysql 日常
    Java 引用
    Mysql insert on update
    Java Mail 异常
    HDU_5456_数位dp
    HDU_4734_数位dp
    POJ_1221_DP
    POJ_1050_最大子矩阵
  • 原文地址:https://www.cnblogs.com/Iowa-Battleship/p/9614685.html
Copyright © 2011-2022 走看看