zoukankan      html  css  js  c++  java
  • hdu 5645 DZY Loves Balls

    DZY Loves Balls

     
     Accepts: 659
     
     Submissions: 1393
     Time Limit: 4000/2000 MS (Java/Others)
     
     Memory Limit: 262144/262144 K (Java/Others)
    问题描述
    DZY喜欢玩球。
    
    他有nn个球,装进一个大盒子里。每个球上面都写着一个整数。
    
    有一天他打算从盒子中挑两个球出来。他先均匀随机地从盒子中挑出一个球,记为AA。他不把AA放回盒子,然后再从盒子中均匀随机地挑出一个球,记为BB。
    
    如果AA上的数字严格大于BB上的数字,那么他就会感到愉悦。
    
    现在告诉你每个球上的数字,请你求出他感到愉悦的概率是多少。
    输入描述
    第一行tt,表示有tt组数据。
    
    接下来tt组数据。每组数据中,第一行包含一个整数nn,第二行包含nn个用空格隔开的正整数a_iai,表示球上的数字。
    
    (1le tle 300, 2le n le 300,1le a_i le 3001t300,2n300,1ai300)
    输出描述
    对于每个数据,输出一个实数答案,保留6位小数。
    
    输入样例
    2
    3
    1 2 3
    3
    100 100 100
    
    输出样例
    0.500000
    0.000000

    思路:

    对于每个数a[i]求满足条件的个数(即所有数中比a[i]小的个数),然后用它们的和除以总的可能数即可。


    include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <map>
    #include <algorithm>
    using namespace std;
    typedef long long ll;
    #define LL(x) (x<<1)
    #define RR(x) (x<<1|1)
    
    const int MOD = 1e9 + 7;
    const int maxn = 305;
    int n;
    int s[maxn];
    int a[maxn];
    int lowbit(int x)
    {
        return x&(-x);
    }
    
    void add(int pos,int x)
    {
        while(pos <= 300)
        {
            s[pos] += x;
            pos += lowbit(pos);
        }
    }
    
    int sum(int x)
    {
        int cnt= 0 ;
        while(x)
        {
            cnt += s[x];
            x -= lowbit(x);
        }
        return cnt;
    }
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            memset(s,0,sizeof(s));
            for(int i = 1;i <= n;i++)
            {
                scanf("%d",&a[i]);
                add(a[i],1);
            }
    
            int all = 0;
            int num = n*(n-1);
            for(int i = 1;i <= n;i++)
            {
                all += sum(a[i]-1);
            }
            printf("%.6f
    ",all*1.0/num);
        }
        return 0;
    }
    

      


  • 相关阅读:
    第四次寒假作业
    寒假作业三
    寒假作业二
    关于C语言
    寒假作业2代码
    计算机小白
    软工第二次作业
    新开始
    android 自定义滑动按钮
    新知识 HtMl 5
  • 原文地址:https://www.cnblogs.com/Przz/p/5409599.html
Copyright © 2011-2022 走看看