Codeforces Round #204 (Div. 1) B. Jeff and Furik 概率DP
链接:
http://codeforces.com/contest/351/problem/B
题意:
给你一个序列,A和B两个玩家,A先走
A每次交换一个相邻的逆序对,B每次有50%几率交换相邻逆序对,还有50%几率交换相邻正序对
问最后a有序 交换次数的期望
题解:
先求出a有多少个逆序对,这个直接n方就行
然后就是dp[i]=1+1+dp[i−2]⋅0.5+dp[i−1+1]]⋅0.5 化简得dp[i] = 4 + dp[i-2]
代码:
31 int a[MAXN]; 32 33 int main() { 34 int n; 35 cin >> n; 36 rep(i, 0, n) cin >> a[i]; 37 int s = 0; 38 rep(i, 0, n) rep(j, i + 1, n) if (a[i] > a[j]) s++; 39 double ans = s & 1 ? s / 2 * 4 + 1 : s * 2; 40 printf("%.6f\n", ans); 41 return 0; 42 }