HDU 4503
湫湫系列故事——植树节
老是刷水题,哈哈。练练手嘛,我不是专业人士。
这是一道概率题,我从来没写过概率题,所以没有解题思路。按概率论的思路来的话会很麻烦,我想了一会就放弃了。然后去看了看网上的题解,是这样说的:
从组合的角度来说,每个人又bi个朋友,也就是说有n-1-bi个人不是朋友,那么三个人不是都是朋友和都不是朋友的组合有bi*(n-1-bi)种。累加除以二(因为对于一种情况两个人都算了一遍)就是总组合数。
#include <cstdio> #include <cstring> using std::memset; int t, n; int C(int n, int m) { int ans = 1 ; for(int i = n-m+1 ; i <= n; i++) { ans *= i; } for(int i = 1; i <= m; i++) { ans /= i; } return ans; } int main() { scanf("%d", &t); while(t--) { scanf("%d", &n); int c = 0; for(int i = 0 ; i < n; i++) { int temp; scanf("%d", &temp); c += temp * (n - 1 - temp); } printf("%.3f\n", 1-c*1.0/C(n,3)/2); } }