分类讨论即可 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 5005; const int mod = 998244353; int i2; int qpow(int p,int q) { int b=p,r=1; while(q>0) { if(q&1) r*=b; b*=b; r%=mod; b%=mod; q>>=1; } return r; }
评测传送门 [问题描述] 有一个1 − n的排列,你会依次进行m次操作,第i次操作表示为(x i , y i ),交换以这两个 值为下标的元素,每次操作有一半的概率成功,你需要求出最后序列的逆序对的期望个数.[输入] 输入文件 inversion.in. 第一行两个数n, m. 第二行n个数表示初始的排列. 接下来m行,每行两个数表示x i , y i .[输出] 输出文件 inversion.out. 一个实数表示答案,四舍五入保留到小数点后 8 位,要求绝对误差不超过 10 -6 . (
Ping pong Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3109 Accepted: 1148 Description N(3<=N<=20000) ping pong players live along a west-east street(consider the street as a line segment). Each player has a unique skill rank. To i
Brainman Time Limit: 1000 MS Memory Limit: 30000 KB 64-bit integer IO format: %I64d , %I64u Java class name: Main [Submit] [Status] [Discuss] Description Background Raymond Babbitt drives his brother Charlie mad. Recently Raymond counted 246 toothp
Description 对于序列\(A\),它的逆序对数定义为满足\(i<j\),且\(A_i>A_j\)的数对\((i,j)\)的个数.给\(1\)到\(n\)的一个排列,按照某种顺序依次删除\(m\)个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数. Input 输入第一行包含两个整数\(n\)和\(m\),即初始元素的个数和删除的元素个数.以下\(n\)行每行包含一个\(1\)到\(n\)之间的正整数,即初始排列.以下\(m\)行每行一个正整数,依次为每次删除的元素. Ou