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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步