zoukankan      html  css  js  c++  java
  • CF258D Little Elephant and Broken Sorting/AGC030D Inversion Sum 期望、DP

    传送门——Codeforces

    传送门——Atcoder


    考虑逆序对的产生条件,是存在两个数(i,j)满足(i < j,a_i > a_j)

    故设(dp_{i,j})表示(a_i>a_j)的概率,每一次一个交换操作时(O(n))地更新即可。

    AGC030D就在模意义下运算,最后就乘上(2^Q)就行了

    看着好简单啊就是想不到

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<ctime>
    #include<cctype>
    #include<algorithm>
    #include<cstring>
    #include<iomanip>
    #include<queue>
    #include<map>
    #include<set>
    #include<bitset>
    #include<stack>
    #include<vector>
    #include<cmath>
    #define ld long double
    //This code is written by Itst
    using namespace std;
    
    inline int read(){
    	int a = 0;
    	char c = getchar();
    	bool f = 0;
    	while(!isdigit(c) && c != EOF){
    		if(c == '-')
    			f = 1;
    		c = getchar();
    	}
    	if(c == EOF)
    		exit(0);
    	while(isdigit(c)){
    		a = a * 10 + c - 48;
    		c = getchar();
    	}
    	return f ? -a : a;
    }
    
    ld dp[1010][1010];
    int num[1010] , N , M;
    
    int main(){
    #ifndef ONLINE_JUDGE
    	freopen("in","r",stdin);
    	//freopen("out","w",stdout);
    #endif
    	N = read();
    	M = read();
    	for(int i = 1 ; i <= N ; ++i)
    		num[i] = read();
    	for(int i = 1 ; i <= N ; ++i)
    		for(int j = i - 1 ; j ; --j){
    			dp[i][j] = num[i] > num[j];
    			dp[j][i] = num[j] > num[i];
    		}
    	for(int i = 1 ; i <= M ; ++i){
    		int a = read() , b = read();
    		for(int j = 1 ; j <= N ; ++j)
    			if(j != a && j != b){
    				dp[j][a] = dp[j][b] = (dp[j][a] + dp[j][b]) * 0.5;
    				dp[a][j] = dp[b][j] = (dp[a][j] + dp[b][j]) * 0.5;
    			}
    		dp[a][b] = dp[b][a] = (dp[a][b] + dp[b][a]) * 0.5;
    	}
    	ld sum = 0;
    	for(int i = 1 ; i <= N ; ++i)
    		for(int j = i - 1 ; j ; --j)
    			sum += dp[j][i];
    	cout << fixed << setprecision(8) << sum;
    	return 0;
    }
    
  • 相关阅读:
    Socket网络编程
    android开发常用颜色
    eclipse使用技巧以及开发安卓程序过程中遇到的问题
    XML文件中的常用属性
    将博客园的文本编辑栏属性变成可以粘贴
    显示单位px、dip、pt以及sp
    WIN32 API IP地址转换
    常用win32api函数
    win32—GrafMenu的CreateBitmapIndirect创建失败的问题
    #pragam 使用方法
  • 原文地址:https://www.cnblogs.com/Itst/p/10330272.html
Copyright © 2011-2022 走看看