zoukankan      html  css  js  c++  java
  • LightOJ 1274 Beating the Dataset

    题意是一个人做ACM题,这道题的数据的字节数和提问数已经给出,答案只有YES或NO。那个人做不来这道题,只能蒙,一开始一定蒙YES,数据会告诉你蒙对了没有,之后蒙的都是之前的正确答案,求蒙错的数据组数的期望数量。

    因为字节数和提问数已经给出,所以立方程组可以算出来YES和NO的个数,设为X,Y。题目可以抽象为某个01串全排列该位置与前一个位置不同或者第一位为0的数量期望。

    每个1贡献的期望是各个0在它前面或者后面两种所以是2 * X * Y,每个0额外贡献了处在第一位期望也就是Y。

    所以得出公式(2 * X * Y + Y) / (X + Y)。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int t;
        scanf("%d", &t);
        int cas = 0;
        while(t--) {
            int n, s;
            scanf("%d %d", &n, &s);
            double x = s - 2 * n, y = n - x;
            double ans = 0;
            ans = (2.0 * x * y + y) / (double) n;
            printf("Case %d: %.7lf
    ", ++cas, ans);
        }
    }
  • 相关阅读:
    Codeforces Round #249 (Div. 2) D. Special Grid 枚举
    图论二
    C语言中的atan和atan2(转)
    BestCoder Round #79 (div.2)
    数学
    LCA
    二分图
    动态规划
    线段树
    树状数组
  • 原文地址:https://www.cnblogs.com/lonewanderer/p/5746649.html
Copyright © 2011-2022 走看看