codeforces 258D Little Elephant and Broken Sorting
来源:互联网 发布:小米 网络诊断怎么关闭 编辑:程序博客网 时间:2024/05/17 20:46
The Little Elephant loves permutations of integers from 1 to n very much. But most of all he loves sorting them. To sort a permutation, the Little Elephant repeatedly swaps some elements. As a result, he must receive a permutation1, 2, 3, ..., n.
This time the Little Elephant has permutation p1, p2, ..., pn. Its sorting program needs to make exactly m moves, during thei-th move it swaps elements that are at that moment located at theai-th and thebi-th positions. But the Little Elephant's sorting program happened to break down and now on every step it can equiprobably either do nothing or swap the required elements.
Now the Little Elephant doesn't even hope that the program will sort the permutation, but he still wonders: if he runs the program and gets some permutation, how much will the result of sorting resemble the sorted one? For that help the Little Elephant find the mathematical expectation of the number of permutation inversions after all moves of the program are completed.
We'll call a pair of integers i, j(1 ≤ i < j ≤ n) an inversion in permutatuon p1, p2, ..., pn, if the following inequality holds: pi > pj.
The first line contains two integers n andm (1 ≤ n, m ≤ 1000, n > 1) — the permutation size and the number of moves. The second line containsn distinct integers, not exceeding n — the initial permutation. Next m lines each contain two integers: thei-th line contains integers ai andbi(1 ≤ ai, bi ≤ n, ai ≠ bi) — the positions of elements that were changed during the i-th move.
In the only line print a single real number — the answer to the problem. The answer will be considered correct if its relative or absolute error does not exceed10 - 6.
2 11 21 2
0.500000000
4 31 3 2 41 22 31 4
3.000000000
【分析】
根本想不出来,但代码量巨短系列
//codeforces 258D Little Elephant and Broken Sorting#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define ll long long#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;const int mxn=1005;int n,m;int a[mxn];double dp[mxn][mxn];int main(){double ans=0;int i,j,u,v;scanf("%d%d",&n,&m);fo(i,1,n) scanf("%d",&a[i]);fo(i,1,n) fo(j,i+1,n) if(a[i]>a[j]) dp[i][j]=1,dp[j][i]=0; else dp[i][j]=0,dp[j][i]=1;while(m--){scanf("%d%d",&u,&v);dp[u][v]=dp[v][u]=0.5;fo(i,1,n) if(i!=u && i!=v) dp[u][i]=dp[v][i]=0.5*(dp[u][i]+dp[v][i]), dp[i][u]=dp[i][v]=0.5*(dp[i][u]+dp[i][v]);}fo(i,1,n) fo(j,i+1,n) ans+=dp[i][j];printf("%.9lf\n",ans);return 0;}
- codeforces 258D Little Elephant and Broken Sorting
- Codeforces 258D Little Elephant and Broken Sorting
- Codeforces 258D Little Elephant and Broken Sorting (逆序对,概率)
- Codeforces-258D:Little Elephant and Broken Sorting(概率DP)
- <codeforces>Little Elephant and Sorting
- codeforces 221D Little Elephant and Array
- codeforces 221D Little Elephant and Array
- Codeforces Round #129 (Div. 2) B. Little Elephant and Sorting
- B. Little Elephant and Sorting
- Codeforces-258B Little Elephant and Elections
- Codeforces 258B Little Elephant and Elections
- Codeforces 258B - Little Elephant and Elections
- Codeforces Round #136 (Div. 2) D. Little Elephant and Array
- Codeforces Round #136 (Div. 2) D. Little Elephant and Array
- CodeForces 204D Little Elephant and Retro Strings
- [Codeforces 258B & 259 D]Little Elephant and Elections 数位dp+dfs
- CF 205B Little Elephant and Sorting
- codeforces 258B Little Elephant and Elections 数位DP+DFS
- 心有灵犀一点通——从『灵犀语音助手』漫谈人工智能的未来
- UVALive
- css应用
- 第29课:彻底解密Spark 1.6.X以前Shuffle中JVM内存使用及配置内幕详情:Spark到底能够缓存多少数据、Shuffle到底占用了多少数据、磁盘的数据远远比内存小却还是报告内存不足?
- Bootstrap 轮播效果
- codeforces 258D Little Elephant and Broken Sorting
- 指针练习
- 51 nod 1082 与7无关的数
- mini版串口通信
- 撸代码记录篇2.1-奔跑的皮皮熊
- 模板___反素数 + poj2286 (反素数+线段树)
- 【bzoj4542】[Hnoi2016]大数
- 指针练习4
- 错误:Gradle sync failed: Could not download junit.jar (junit:junit:4.12): No cached version available