zoukankan      html  css  js  c++  java
  • agc007C

    题意

    题目链接

    翻译来自神仙yyb

    Sol

    又是一道神仙题。。

    我开始的思路是枚举空位,但是还是不能做,GG

    标算过于神仙,其中一些细节我也理解不了

    题目给出的实际是一个首项为$d$,公差为$x$的等差数列

    $sum = 2dn + frac{2n(2n - 1)x}{2}$

    此时的期望为$frac{sum}{2n}$

    考虑修改之后会有那些值发生改变

    $d' = frac{(2n - 2)d + d + 2x + 3d + 3x)}{2n}$(考虑第一个位置怎么变)

    $sum' = frac{d + (d + x) + (2n - 2)x + d + (2n - 1) x + d}{2n}$

    $x' = frac{sum -2nd}{n(2n - 1)}$

    不断推下去即可

    #include<bits/stdc++.h>
    using namespace std;
    long double N, d1, x, ans;
    int main() {
        cin >> N >> d1 >> x;
        for(int i = N; i >= 1; i--) {
            long double s = d1 * 2 * N + N * (2 * N - 1) * x;
            ans += s / 2 / N;
            s = s - (4 * d1 + 4 * N * x - 2 * x)  / 2 / N;
            d1 = ((2 * N - 2) * d1 + d1 + 2 * x + 3 * d1 + 3 * x) / 2 / N;
            N--;
            x = (s - 2 * N * d1) / N / (2 * N - 1);
        //    if(i > 990) printf("%.10lf
    ", (double)x);
        }
        printf("%.15lf", (double)ans);
        return 0;
    }
  • 相关阅读:
    java映射
    java线程的一些方法和特性
    java线程通信
    java多线程同步
    java类对象概述
    JavaScript的对象——灵活与危险
    node.js项目中使用coffeescript的方式汇总
    12.2
    12.1
    11.30
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/9707414.html
Copyright © 2011-2022 走看看