博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4481 JSOI2015非诚勿扰(概率期望+树状数组)
阅读量:4931 次
发布时间:2019-06-11

本文共 1174 字,大约阅读时间需要 3 分钟。

  首先求出每个女性接受某个男性的概率。这个概率显然是一个无穷等比数列求和。

  然后按编号从小到大考虑每个女性,维护出每个男性被选择的期望次数,BIT上查询后缀和即可。

  需要long double。

#include
#include
#include
#include
#include
#include
#include
using namespace std;int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}#define N 500010#define double long doubleint n,m;double p,tree[N],q[N],ans;vector
a[N];double query(int k){ double s=0;while (k) s+=tree[k],k-=k&-k;return s;}void ins(int k,double s){ while (k<=n) tree[k]+=s,k+=k&-k;}int main(){#ifndef ONLINE_JUDGE freopen("bzoj4481.in","r",stdin); freopen("bzoj4481.out","w",stdout); const char LL[]="%I64d\n";#else const char LL[]="%lld\n";#endif n=read(),m=read();cin>>p; for (int i=1;i<=m;i++) { int x=read(),y=read(); a[x].push_back(y); } int cnt=0; for (int i=1;i<=n;i++) { sort(a[i].begin(),a[i].end()); int s=a[i].size(); double v=1; for (int j=0;j
0; }#undef double double p=ans;printf("%.2f",p); return 0;}

 

转载于:https://www.cnblogs.com/Gloid/p/9883354.html

你可能感兴趣的文章
Windows Azure 90天Free Trial (不含教程),已经可以支持中文简体与中文繁体了
查看>>
清空浏览器缓存
查看>>
Unity学习疑问记录之向量基础
查看>>
linux -- 嵌入式2.6.37wifi-vnt6656移植驱动
查看>>
ubuntu -- mf210v拨号流程
查看>>
Give your laptop some gaming power
查看>>
2016-08-22
查看>>
【HDOJ3567】【预处理bfs+映射+康拓展开hash】
查看>>
MVC设计及使用拓展
查看>>
【NOI 2002】银河英雄传说(带权并查集)
查看>>
Linux下搭建FTP以及报错
查看>>
hello2
查看>>
js基础
查看>>
windows软件卸载工具Geek Uninstaller免安装版
查看>>
java学习之—二叉树
查看>>
冲刺第七天
查看>>
C#-WinForm-打开其他窗体的三种方式-Show()、设置Owner()、ShowDialog()
查看>>
微服务设计指南
查看>>
EM00001
查看>>
Java 语言设计中的部分共享策略
查看>>