hdu多校第二场 1005 (hdu6595) Everything Is Generated In Equal Probability
题意:
给定一个N,随机从[1,N]里产生一个n,然后随机产生一个n个数的全排列,求出n的逆序数对的数量,加到cnt里,然后随机地取出这个全排列中的一个非连续子序列(注意这个子序列可以是原序列),再求出这个子序列的逆序数对,加到cnt里,重复这个过程,直到最后取出的为空。
题解:
先不考虑第一步随机从[1,N]里产生一个n,只考虑n给定的情况,求出了f[n],那么最后的结果就是
$ ans[N]=\frac{\sum_{n=1}^N f[n]}{N} $
赛时和队友利用找规律法和暴力模拟法推出
$ f[i]=\sum_{i=1}^{n-1}\frac{2i}{3} $
下面给出证明:
因为任意一个长度为n的全排列,其所含的逆序对的期望为
$ \binom{n}{2}/2 $ (不难理解,就是随便取两个点交换一下就出来一个逆序对)
而取出的那一个非连续子序列,我们把它里面的数字离散化以后也是一个全排列,所以
$ f[i]=\binom{n}{2}/2+\frac{1}{2^i}\sum_{j=0}^i\binom{i}{j}f[j] $
移项,得到递推公式
$ f[i]=\frac{2^{i-1}}{2^i-1}\binom{n}{2}/2+\frac{1}{2^i-1}\sum_{j=0}^{i-1}\binom{i}{j}f[j] $
f[1]=0,不难推出通项公式
$ f[i]=\sum_{i=1}^{n-1}\frac{2i}{3} $
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cctype> #include <string> #include <vector> #include <map> #include <set> #include <vector> #include <queue> #include <stack> const int MOD = 998244353; #define rep(i,n,m) for(int i=n;i<=m;++i) const double eps = 1e-16; #define ll long long using namespace std; const int maxn = 10000000; const int maxm = 2e5 + 10; const int inf = 1 << 28; typedef pair<int, int> P; #define zero(a) fabs(a)<eps inline int read() {int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9'){if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9'){x = 10 * x + ch - '0';ch = getchar();}return x * f; }ll quick_mod(ll x, ll n) {ll res = 1;while (n) {if (n & 1) res = res * x % MOD;x = x * x % MOD;n = n >> 1;}return res; } ll a[3005]; void init() {a[0] = a[1] = 0;a[2] = 2;for (int i = 3; i <= 3000; ++i)a[i] = a[i - 1] + (i - 1) * 2;for (int i = 1; i <= 3000; ++i)a[i] += a[i - 1]; } int main() {ll n;init();while (~scanf("%lld", &n)){if (n == 1) { cout << "0" << endl; continue; }ll a1 = a[n];ll b = 3 * n;ll x = quick_mod(b, MOD - 2);cout << a1 % MOD * x % MOD<<endl;} }
转载于:https://www.cnblogs.com/isakovsky/p/11247444.html
hdu多校第二场 1005 (hdu6595) Everything Is Generated In Equal Probability相关推荐
- hdu6595 Everything Is Generated In Equal Probability 数学期望
链接 Everything Is Generated In Equal Probability 题意 ①给个N(1≤N≤3000),在1~N中等概率取一个数n ②随机产生一个1~n的排列,记录逆序对个 ...
- [hdu6595]Everything Is Generated In Equal Probability
计算一对逆序对的贡献,即在n个数期望要删多少步才能删掉其中的两个数,设f(n)表示此时的期望,则有方程$f[n]=3/4+(\sum_{i=2}^{n}f[i]\cdot c(n-2,i-2))/2^ ...
- Fake Maxpooling(2020多校第二场F)
Fake Maxpooling(2020多校第二场F) 文章目录 题意: 题解: 代码: 题意: 一个n * m的矩阵,第i行第j列的值是lcm(i,j),然后给定一个 k * k的子矩阵(k< ...
- Duration(2020多校第二场D)
Duration(2020多校第二场D) 文章目录 题意 题解 代码 首先,非常感谢出题人出这个题,避免了我全wa的尴尬 题意 求两个时间相差多少秒,两个时间为同一天 题解 全部转化成秒,然后求差 代 ...
- Boundary(2020多校第二场B)
Boundary(2020多校第二场B) 文章目录 题意: 题解: 思路1: 代码: 思路二 代码 题意: 坐标平面有n个点(不与原点(0,0)重复),现考虑一个圆,(0,0)点在圆的边界,问这个圆的 ...
- 2021牛客暑假多校第二场 K题—Stack (链表)
2021牛客暑假多校第二场 K题-Stack 题意: 一个单调栈,给你第n次操作时里面数据的数量,让你给出里面塞入的会是哪些数字. 主要思想:链表模拟 (代码里面有注释) (题解一开始说的是拓扑,后来 ...
- 20190724杭电多校第二场
没有补题..倒是又想到了1002的二分做法,比原来好写了不少,也快了不少. #include<bits/stdc++.h> using namespace std; #define p_b ...
- 牛客多校第二场补题(继续罚坐)
牛客多校第二场(继续罚坐场) Draw Grids ZYT和LBC玩游戏,在4*4的矩阵中,从起点开始,每个人只能连一条直线,且只能在起点或者上一个人的终点位置连上这个位置相邻的一条直线,并且不能形成 ...
- HDU 6595 Everything Is Generated In Equal Probability (期望dp,线性推导)
Everything Is Generated In Equal Probability \[ Time Limit: 1000 ms\quad Memory Limit: 131072 kB \] ...
最新文章
- 2022-2028年中国地沟油制生物柴油行业市场研究及前瞻分析报告
- SQL Server开发人员应聘常被问的问题妙解汇总
- 自动换行的draw2d标签
- 删除windows换行符^M
- CoreCRM 开发实录——开始之新项目的技术选择
- 使用 Cilium 增强 Kubernetes 网络安全
- ring0和ring3的区别
- 没有桌面体验功能就不能进行图片打印
- javascript中的undefined,null,,0和false的云集
- WebConfig主要节点配置总结
- 服务器 python cant open file_如何删除分析*。gcda:无法打开python virtualenv builder出错?...
- MySQL 中隔离级别 RC 与 RR 的区别
- 训练集(training)、验证集(validation)和测试集(test)
- 如何下载矢量电子地图(OpenStreetMap)
- 案例——蚂蚁金服初探,唯一的金融互联网生态...
- 【密码学】七、密钥管理
- 《linux核心应用命令速查》连载五:atq:显示目前使用at命令后待执行的命令队列...
- 工业机器人应用编程考核设备
- 【This is 广告】百度直达号——@ 加 关键字
- android百度地图 自定义气泡,百度地图自定义吹出框(气泡)(转)