首先很容易计算对于一个如意郎君列表里有x个男性的女性,编号排第i位的男性被选的概率是

\[ p*(1-p)^{i-1}+p*(1-p)^{i-1+n}+p*(1-p)^{i-1+n}+…
\]

\[=p*((1-p)^{i-1}+(1-p)^{i-1+n}+(1-p)^{i-1+n}+…)
\]

然后我就不会了……

然后发现有个神奇的东西叫无限等比数列求和公式,只适用于公比绝对值小于1的情况:

\[a1+a1*q+a1*q^2+……+a1*q^{inf}
\]

\[=\frac{a1-a1*q^{inf+1}}{1-q}
\]

因为fabs(q)<1,所以-a1*q^{inf+1}无限趋近于0,就当成0算

\[=\frac{a1}{1-q}
\]

然后剩下就是用树状数组求逆序对了

#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int N=500005;
int n,m;
long double p,t[N],ans;
struct qwe
{
int b;
long double p;
qwe(int B=0,long double P=0)
{
b=B,p=P;
}
};
vector<qwe>a[N];
bool cmp(const qwe &a,const qwe &b)
{
return a.b<b.b;
}
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void update(int x,long double v)
{
for(int i=x;i<=n;i+=(i&(-i)))
t[i]+=v;
}
long double ques(int x)
{
long double r=0;
for(int i=x;i>=1;i-=(i&(-i)))
r+=t[i];
return r;
}
int main()
{
n=read(),m=read();
cin>>p;
for(int i=1;i<=m;i++)
{
int x=read(),y=read();
a[x].push_back(qwe(y,0.0));
}
for(int i=1;i<=n;i++)
{
sort(a[i].begin(),a[i].end(),cmp);
long double q=1;
for(int j=0;j<a[i].size();j++)
a[i][j].p=q,q*=(1-p);
for(int j=0;j<a[i].size();j++)
a[i][j].p=a[i][j].p*p/(1.0-q);
}
for(int i=n;i>=1;i--)
{
for(int j=0;j<a[i].size();j++)
ans+=a[i][j].p*ques(a[i][j].b-1);
for(int j=0;j<a[i].size();j++)
update(a[i][j].b,a[i][j].p);
}
printf("%.2f\n",(double)ans);
return 0;
}

bzoj 4481: [Jsoi2015]非诚勿扰【期望+树状数组】的更多相关文章

  1. BZOJ4481: [Jsoi2015]非诚勿扰【概率期望+树状数组】

    Description [故事背景] JYY赶上了互联网创业的大潮,为非常勿扰开发了最新的手机App实现单身 大龄青年之间的"速配".然而随着用户数量的增长,JYY发现现有速配的算 ...

  2. BZOJ 1901 Zju2112 Dynamic Rankings ——树状数组套主席树

    [题目分析] BZOJ这个题目抄的挺霸气. 主席树是第一时间想到的,但是修改又很麻烦. 看了别人的题解,原来还是可以用均摊的思想,用树状数组套主席树. 学到了新的姿势,2333o(* ̄▽ ̄*)ブ [代 ...

  3. [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】

    题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...

  4. BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]

    题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 ...

  5. BZOJ.4826.[AHOI/HNOI2017]影魔(树状数组/莫队 单调栈)

    BZOJ LOJ 洛谷 之前看\(mjt\)用莫队写了,以为是一种正解,码了3h结果在LOJ T了没A= = 心态爆炸(upd:发现是用C++11(NOI)交的,用C++11交就快一倍了...) 深刻 ...

  6. bzoj 3262 陌上花开 - CDQ分治 - 树状数组

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...

  7. bzoj 2527 Meteors - 整体二分 - 树状数组

    Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...

  8. 2018牛客网暑期ACM多校训练营(第五场) F - take - [数学期望][树状数组]

    题目链接:https://www.nowcoder.com/acm/contest/143/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K ...

  9. 牛客网暑期ACM多校训练营(第五场) F - take —— 期望+树状数组+逆元

    看到一篇好的博客特意转出来观摩大佬:转:https://blog.csdn.net/greybtfly/article/details/81413526 题目大意:给n个箱子排成一排,从头到尾按顺序依 ...

随机推荐

  1. [Noip复习知识点][个人向]Zackzh

    只是列列一些要复习的,努力复习吧,有种noip退役的赶脚. 一.模拟 (这你也不会?退役吧) 二.DP 1.基础dp 2.区间dp 3.状压dp 4.树形dp 6.概率(期望)dp 7.环形dp 8. ...

  2. mysql.bat

    cls  @echo off :设置窗口字体颜色 color 0a  :设置窗口标题 TITLE MySQL管理程序    call :checkAdmin    goto menu :菜单 :men ...

  3. CSS浮动通俗讲解

    首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...

  4. poj 1695 Magazine Delivery 记忆化搜索

    dp[a][b][c],表示三个人从小到大依次在a,b.c位置时.距离结束最少的时间. 每次选一个人走到c+1位置搜索就好了. 坑点在于不能floyd.预计题目没说清楚.意思就是假设没送Li,那么Li ...

  5. [RxJS] Create a Reusable Operator from Scratch in RxJS

    With knowledge of extending Subscriber and using source.lift to connect a source to a subscriber, yo ...

  6. SharePoint 2013 调查问卷的使用方法

    SharePoint 2013 调查问卷的使用方法 1,介绍调查问卷的用法. 2.图形和全部结果. 3,控制用户仅仅能看到自己答案. 1.确认有权限,假设没有管理管理权限请向管理员申请. 站点&quo ...

  7. Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的使用方法总结

    具体解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一 $.get(url,[data],[callback]) 说明:url为请求地 ...

  8. Idea 13 新建maven项目

    1.此时生成的maven项目没有web文件夹 file→New Project→Maven→Next→GID.AID (NewDemo)→Next→ProjectName(NewDemo)→Finis ...

  9. 在matlab中生成m序列

    实验环境为matlab2013b 1.首先编写一个mseq.m文件,内容为: function[mseq]=m_sequence(fbconnection)  n=length(fbconnectio ...

  10. Linux下通过find命令进行rm文件删除的小技巧

       我们常常会通过find命令进行批量操作.如:批量删除旧文件.批量改动.基于时间的文件统计.基于文件大小的文件统计等.在这些操作其中,因为rm删除操作会导致文件夹结构变化,假设要通过find结合r ...