\(a_i=-1\)的称为未知数,否则称为已知数

逆序对数分成3块考虑,两个已知数的逆序对,已知数和未知数的逆序对,两个未知数的逆序对。

两个已知数的逆序对,树状数组扫一遍即可

两个未知数的逆序对,设有\(m\)个未知数,每一对之间的逆序对数量期望都是\(0.5\),所以这一块答案是\(m(m-1)*0.25\)

已知数和未知数的逆序对,也很简单,先把所有未知数算出来,求出每一个已知数大于多少个未知数,设为\(cnt_i\)

从左到右扫一遍所有的未知数,对于在左边的已知数,那个数必须大于这个未知数才能产生贡献,所以期望是\(\frac{cnt_i}{m}\);右边的期望是\(\frac{m-cnt_i}{m}\)

所以扫到已知数的时候重新算这个已知数的贡献就好了

#include<bits/stdc++.h>
#define il inline
#define vd void
#define mod 998244353
#define inv2 499122177
typedef long long ll;
il int gi(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,ans,A[200010],t[200010],B[200010],m;
bool yes[200010];
il vd update(int x){while(x<=n)++t[x],x+=x&-x;}
il int query(int x){int r=0;while(x)r+=t[x],x-=x&-x;return r;}
il int pow(int x,int y){int ret=1;while(y){if(y&1)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=1;}return ret;
}
int main(){
#ifndef ONLINE_JUDGEfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
#endifn=gi();for(int i=1;i<=n;++i)A[i]=gi();for(int i=n;i;--i)if(~A[i])ans=(ans+query(A[i]))%mod,update(A[i]);int cnt=0;for(int i=1;i<=n;++i)if(A[i]==-1)++cnt;ans=(ans+1ll*cnt*(cnt-1)%mod*inv2%mod*inv2%mod)%mod;if(cnt){for(int i=1;i<=n;++i)if(~A[i])yes[A[i]]=1;for(int i=1;i<=n;++i)if(!yes[i])B[++m]=i;int invm=pow(m,mod-2);for(int i=1;i<=n;++i)if(~A[i])A[i]=1ll*invm*(std::lower_bound(B+1,B+m+1,A[i])-B-1)%mod;int res=0;for(int i=1;i<=n;++i)if(~A[i])res=(res+1+mod-A[i])%mod;for(int i=1;i<=n;++i)if(~A[i])res=(res-1ll+A[i]+A[i])%mod;else ans=(ans+res)%mod;}printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/xzz_233/p/10220344.html

CF1096F Inversion Expectation相关推荐

  1. 【CF套题】Educational Codeforces Round 57

    [前言] 打了小号,做到心态爆炸,虽然最后过了6T. 然而十分后悔为什么没有用大号打,大号打就上橙了qwq. [题目] 原题地址 A.Find Divisible 输出lll和2l2l2l即可. #i ...

  2. EM算法(Expectation Maximization)期望最大化算法

    原文:EM(期望最大化)算法初步认识 - 大数据和AI躺过的坑 - 博客园 https://www.cnblogs.com/zlslch/p/6965374.html 机器学习十大算法之一:EM算法( ...

  3. UVA 11990 ``Dynamic'' Inversion 动态逆序对

    ``Dynamic'' Inversion Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/index ...

  4. 期望最大EM(Expectation Maximum)算法是什么?为什么有时候不用梯度下降而是用EM算法

    EM(Expectation  Maximum)的应用: EM算法有很多的应用,最广泛的就是GMM混合高斯模型.聚类(典型的KMeans算法的过程就属于EM算法).HMM等等. EM的核心工作就是隐变 ...

  5. Inversion Sequence(csu 1555)

    Description For sequence i1, i2, i3, - , iN, we set aj to be the number of members in the sequence w ...

  6. [Js-Spring]Spring与IoC(控制反转,Inversion of Control)

    控制反转(Ioc,Inversion of Control),是一个概念,一种思想.指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理.控制反转就是对对象控制权的转移,从 ...

  7. IoC(Inversion of Control,控制反转)模式

    IoC模式 1.依赖依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它. ...

  8. EM算法(Expectation Maximization Algorithm)详解

    EM算法(Expectation Maximization Algorithm)详解 主要内容 EM算法简介 预备知识  极大似然估计 Jensen不等式 EM算法详解  问题描述 EM算法推导 EM ...

  9. 【算法与数据结构】一道检测inversion count的初级算法

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.题目 这是一道检测inversion count的算法.它将检测输入序列中反序输入的个数,即检测其中有几对A ...

  10. Inversion of Control Containers and the Dependency Injection pattern--Martin Fowler

    原文地址:https://martinfowler.com/articles/injection.html n the Java community there's been a rush of li ...

最新文章

  1. catch句子_「实用英文」知道 catch on 是什么意思吗?catch 精选短语合集
  2. shell 循环删除进程
  3. DBA/运维人员近期直播活动日历
  4. 华为路由器http诊断失败_高端家庭的标配,华为路由Q2 Pro是路由器中的吴彦祖...
  5. String的replaceAll方法中的正则表达式用法
  6. 校园网规划与设计(附加完整word文档和pkt文件)
  7. DVWA靶机安装教程
  8. linux 服务器 告警声,服务器故障,报警声汇总
  9. zynq pl 发数据给 ps
  10. 帝国cms7.2自定义列表建立tag效果 代码 教程
  11. Vant上传多个图片或视频,更改视频预览图
  12. [Android]仿京东手机端类别页
  13. 头条号赚钱的4种办法,快看看你适合哪种?
  14. 【matlab郭彦甫课程答案】
  15. C# 校验类(邮箱、手机号、身份证号等)
  16. 一个开源经典的MCU菜单框架设计
  17. 【MySQL】多表联合查询、连接查询、子查询
  18. 采集快手APP的10个经典方法
  19. photoshop快速抠图,几秒钟解决
  20. 80GB医学影像数据集发布!OCTA-500公开下载

热门文章

  1. background: radial-gradient径向渐变
  2. 代码之美~强大的构造方法重载
  3. 《深度学习导论及案例分析》一2.5概率有向图模型
  4. 芒果 TV Redis 服务解决方案
  5. 粒子群算法(1)----粒子群算法简单介绍
  6. iOS 处理pfx文件
  7. 重磅!微软在 GitHub 又一开源力作面世,代号「女娲」!
  8. 为什么 jsp 还没有淘汰?
  9. 厉害了!3分钟搞定开发部署,这个霸榜的AI开源项目大公司都在用
  10. Python被誉为神奇的“胶水语言”,到底神奇在哪?