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喜欢玩球。 他有n个球,装进一个大盒子里。每个球上面都写着一个整数。 有一天他打算从盒子中挑两个球出来。他先均匀随机地从盒子中挑出一个球,记为A。他不把A放回盒子,然后再从盒子中均匀随机地挑出一个球,记为B。 如果A上的数字严格大于B上的数字,那么他就会感到愉悦。 现在告诉你每个球上的数字,请你求出他感到愉悦的概率是多少。
输入描述
第一行t,表示有t组数据。 接下来t组数据。每组数据中,第一行包含一个整数n,第二行包含n个用空格隔开的正整数ai,表示球上的数字。 (1≤t≤300,2≤n≤300,1≤ai≤300)
输出描述
对于每个数据,输出一个实数答案,保留6位小数。
输入样例
2 3 1 2 3 3 100 100 100
输出样例
0.500000 0.000000
思路:
对于每个数a[i]求满足条件的个数(即所有数中比a[i]小的个数),然后用它们的和除以总的可能数即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 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\n" ,all*1.0/num); } return 0; } |
分类:
BestCoder Round
, 线段树or树状数组
标签:
BestCoder
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?