bzoj4481非诚勿扰(期望dp)
有n个女性和n个男性。每个女性的如意郎君列表都是所有男性的一个子集,并且可能为空。如果列表非空,她们会在其中选择一个男性作为自己最终接受的对象。将“如意郎君列表”中的男性按照编号从小到大的顺序呈现给她。对于每次呈现,她将独立地以P的概率接受这个男性(换言之,会以1−P的概率拒绝这个男性)。如果她选择了拒绝,App就会呈现列表中下一个男性,以此类推。如果列表中所有的男性都已经呈现,那么会重新按照列表的顺序来呈现这些男性,直到她接受了某个男性为止。显然,在这种规则下,每个女性只能选择接受一个男性,而一个男性可能被多个女性所接受。当然,也可能有部分男性不被任何一个女性接受。这样,每个女性就有了自己接受的男性(“如意郎君列表”为空的除外)。现在考虑任意两个不同的、如意郎君列表非空的女性a和b,如果a的编号比b的编号小,而a选择的男性的编号比b选择的编号大,那么女性a和女性b就叫做一对不稳定因素。求得不稳定因素的期望个数(即平均数目)
Solution
此题要求期望的逆序对数,我们先分析每个男性在每个女性的选择中被选择的概率(图是网上抄来的)

等比数列求和一下

概率求出来了,我们就可以以男性编号为下标,维护一个树状数组,里面的值代表这个男性在前面出现的期望次数。
求出这个后,我们在乘上当前男性被选择的概率就可以成为答案的一部分。
Code
#include<iostream>
#include<cstdio>
#include<algorithm>
#define N 500002
using namespace std;
typedef long double ld;
ld ans,tr[N],p;
int n,m;
struct zzh{
int x,y;
}a[N];
bool cmp(zzh a,zzh b){
if(a.x!=b.x)return a.x<b.x;
else return a.y<b.y;
}
void add(int x,ld y){while(x<=n)tr[x]+=y,x+=x&-x;}
double query(int x){double ans=;while(x)ans+=tr[x],x-=x&-x;return ans;}
int main(){
// freopen("4481.in","r",stdin);
// freopen("4481.out","w",stdout);
scanf("%d%d%Lf",&n,&m,&p);
for(int i=;i<=m;++i)scanf("%d%d",&a[i].x,&a[i].y);
sort(a+,a+m+,cmp);
int now=;
for(int i=now;i<=m;i=now+){
now=i;
while(a[now].x==a[now+].x)now++;
ld x=;
for(int j=i;j<=now;++j)x*=(-p);x=-x;
ld y=p;
for(int j=i;j<=now;++j){
ld xx=y/x;
add(n-a[j].y+,xx);
ans+=xx*query(n-a[j].y);
y*=(-p);
}
}
printf("%.2Lf",ans);
return ;
}
bzoj4481非诚勿扰(期望dp)的更多相关文章
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- [NOIP2016]换教室 D1 T3 Floyed+期望DP
[NOIP2016]换教室 D1 T3 Description 对于刚上大学的牛牛来说, 他面临的第一个问题是如何根据实际情况中情合适的课程. 在可以选择的课程中,有2n节课程安排在n个时间段上.在第 ...
- HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)
题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...
- 【BZOJ-4008】亚瑟王 概率与期望 + DP
4008: [HNOI2015]亚瑟王 Time Limit: 20 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 832 Solved: 5 ...
- 期望dp BZOJ3450+BZOJ4318
BZOJ3450 概率期望DP f[i]表示到i的期望得分,g[i]表示到i的期望长度. 分三种情况转移: ① s[i]=‘x’:f[i]=f[i-1],g[i]=0 ② s[i]=‘o’:f[i]= ...
- HDU 4405 期望DP
期望DP算是第一题吧...虽然巨水但把思路理理清楚总是好的.. 题意:在一个1×n的格子上掷色子,从0点出发,掷了多少前进几步,同时有些格点直接相连,即若a,b相连,当落到a点时直接飞向b点.求走到n ...
- POJ 2096 【期望DP】
题意: 有n种选择,每种选择对应m种状态.每种选择发生的概率相等,每种选择中对应的每种状态发生的概率相等. 求n种选择和m种状态中每种至少发生一次的期望. 期望DP好别扭啊.要用倒推的方法. dp[i ...
- ZOJ 3822 Domination 期望dp
Domination Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...
- poj 2096 Collecting Bugs(期望 dp 概率 推导 分类讨论)
Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other ...
- uva11600 状压期望dp
一般的期望dp是, dp[i] = dp[j] * p[j] + 1; 即走到下一步需要1的时间,然后加上 下一步走到目标的期望*这一步走到下一步的概率 这一题,我们将联通分块缩为一个点,因为联通块都 ...
随机推荐
- 敏捷与CMM的恩怨
模式不同,一种是灵活,一种是严肃.
- Linux之基础知识
在此总结使用Linux的时候,一些必须知道的基础内容,记录一下,加强记忆 一. linux 运行级别 运行级别就是操作系统当前正在运行的功能级别.这个级别从0到6 ,具有不同的功能.这些级别在/et ...
- C#复习笔记(3)--C#2:解决C#1的问题(实现迭代器的捷径)
实现迭代器的捷径 从这个题目上可以看到C#1实现一个迭代器模式的话是多么的痛苦,我自己也写过不下40行的代码来实现一个迭代器,C#中的迭代器模式是通过IEnumerable和他的泛型等价物IEnume ...
- [转帖]wifi 4G 和 蓝牙的区别
作者:沈万马链接:https://www.zhihu.com/question/64739486/answer/225227838来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- jquery 设置cookie、删除cookie、获取cookie
1.引入jquery.js <script src="//cdn.bootcss.com/jquery/1.12.4/jquery.js"></script> ...
- Operation not allowed on a unidirectional dataset错误?
关于网友提出的“ Operation not allowed on a unidirectional dataset错误?”问题疑问,本网通过在网上对“ Operation not allowed o ...
- Ajax之Jquery封装使用举例2(Json和JsonArray处理)
本例主要使用ajax进行异步数据请求,并针对返回数据为json和jsonarray类型的数据处理. 本例中只有前端的代码,后端代码不是本文重点,故省略. 后端接口返回数据为: Json: {" ...
- Vasya and a Tree CodeForces - 1076E(线段树+dfs)
I - Vasya and a Tree CodeForces - 1076E 其实参考完别人的思路,写完程序交上去,还是没理解啥意思..昨晚再仔细想了想.终于弄明白了(有可能不对 题意是有一棵树n个 ...
- hibernate主配置文件中指定session与当前线程绑定
配置一条属性 <property name="hibernate.current_session_context_class">thread</property& ...
- git使用常见问题
1.git branch使用,创建新的分之后做修改后,其他分支也被同步修改 问题: 原项目在 master 分支,执行下面的操作: git branch test git checkout tes ...