【51nod 1667】概率好题
题目
甲乙进行比赛。
他们各有k1,k2个集合[Li,Ri]
每次随机从他们拥有的每个集合中都取出一个数
S1=sigma甲取出的数,S2同理
若S1>S2甲胜 若S1=S2平局 否则乙胜
分别求出甲胜、平局、乙胜的概率。
(显然这个概率是有理数,记为p/q,则输出答案为(p/q)%(1e9+7))(逆元)
注意 多组数据
分析
考虑甲胜的概率,其他类似,
\(\sum x_i>\sum y_i\),其中\(L1[i]<=x_i<=R1[i],L2[i]<=y_i<=R2[i]\)
我们设\(x_i=L1[i]+x_i,y_i=R2[i]-y_i\)
所以
\]
移项
\]
设k
\]
然后就可以容斥了,
枚举至少t个数超出范围,容斥系数为(-1)^k,用插板法求值。
#include <cmath>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
const int inf=2147483647;
const long long mo=1e9+7;
const int N=10;
int T,n,m,lim[N],lim1[N],L[N],R[N],L1[N],R1[N];
long long ans,ny[N*3],an[3];
using namespace std;
long long ksm(long long x,int y)
{
long long s=1;
for(;y;y>>=1,x=x*x%mo)
if(y&1) s=s*x%mo;
return s;
}
long long C(long long n,long long m)
{
long long s=1;
for(long long i=0;i<m;i++) s=s*(n-i)%mo;
s=s*ny[m]%mo;
return s;
}
void dg(int x,int y,int s,int op)
{
if(x>n+m)
{
if(s<0) return;
ans=(ans+(y&1?-1:1)*C(s+n+m+op-1,n+m+op-1)+mo)%mo;
return;
}
dg(x+1,y,s,op),dg(x+1,y+1,x<=n?s-lim[x]-1:s-lim1[x-n]-1,op);
}
int main()
{
ny[0]=ny[1]=1;
for(int i=2;i<=20;i++) ny[i]=(mo-mo/i)*ny[mo%i]%mo;
for(int i=2;i<=20;i++) ny[i]=ny[i-1]*ny[i]%mo;
for(scanf("%d",&T);T--;)
{
scanf("%d",&n);
long long num=1;
for(int i=1;i<=n;i++) scanf("%d%d",&L[i],&R[i]),lim[i]=R[i]-L[i],num=num*(R[i]-L[i]+1)%mo;
scanf("%d",&m);
for(int i=1;i<=m;i++) scanf("%d%d",&L1[i],&R1[i]),lim1[i]=R1[i]-L1[i],num=num*(R1[i]-L1[i]+1)%mo;
int s=-1;
for(int i=1;i<=n;i++) s-=L[i];
for(int i=1;i<=m;i++) s+=R1[i];
ans=0,dg(1,0,s,1),an[2]=1ll*ans*ksm(num,mo-2)%mo;
ans=0,dg(1,0,s+1,0),an[1]=1ll*ans*ksm(num,mo-2)%mo;
an[0]=(1-an[1]-an[2]+mo*2)%mo;
printf("%lld %lld %lld\n",an[0],an[1],an[2]);
}
}
【51nod 1667】概率好题的更多相关文章
- 51Nod 1667 概率好题 - 容斥原理
题目传送门 无障碍通道 有障碍通道 题目大意 若$L_{i}\leqslant x_{i} \leqslant R_{i}$,求$\sum x_{i} = 0$以及$\sum x_{i} < 0 ...
- 51nod 1667 概率好题
Description: 甲乙进行比赛. 他们各有k1,k2个集合[Li,Ri] 每次随机从他们拥有的每个集合中都取出一个数 S1=sigma甲取出的数,S2同理 若S1>S2甲胜 若S1=S2 ...
- 【CF913F】Strongly Connected Tournament 概率神题
[CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...
- 51nod 1105 二分好题
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1105 1105 第K大的数 基准时间限制:1 秒 空间限制:131072 ...
- 51nod 80分算法题
1537:见前几篇. 1627:题意:给定n,m的网格(10^5),初始状态为(1,1),你每次可以瞬移到右下方(不可以同行同列逗留)任何一个方格里,求移动到n,m的方案数. 一句话题解:首先很容易想 ...
- 概率好题 Light OJ 1027
题目大意:你在迷宫里,有n扇门,每个门有一个val,这个val可正可负,每次通过一扇门需要abs(x)分钟,如果这个门的val是正的,那么就直接出了迷宫,否则回到原地,问出去迷宫的期望是多少? 思路: ...
- A - Arcade Game Gym - 100814A (概率思维题)
题目链接:https://cn.vjudge.net/contest/285964#problem/A 题目大意:每一次给你你一个数,然后对于每一次操作,可以将当前的数的每一位互换,如果互换后的数小于 ...
- LightOJ 1218 概率水题(几何分布)
题意:给你一个n面骰子,问你投出所有面需要的次数的期望值是多少. 题解:放在过去估计秒解,结果现在自己想好久,还查了下,有人用极限证明...实际上仔细想想这种情况投出与前面不一样的概率p的倒数就是次数 ...
- 51nod1667 概率好题
基准时间限制:4 秒 空间限制:131072 KB 分值: 640 甲乙进行比赛. 他们各有k1,k2个集合[Li,Ri] 每次随机从他们拥有的每个集合中都取出一个数 S1=sigma甲取出的数,S ...
随机推荐
- Oracle通过正则表达式分割字符串 REGEXP_SUBSTR
REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string ...
- HDU3068 最长回文(manacher模板
给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等 Input输入有多组case,不超过120组,每组输入为一 ...
- P1003铺地毯
这道题是2011年提高组第一题,在洛谷被评为普及-.看到题目后直接写了一个纯模拟,结果第一次提交全部RE,后将数组开大,随即MLE.然后又去思索其余方法,采用先将每一个地毯的对角线存下来,然后i--看 ...
- 关于centOS安装配置mysql5.6那点事
第一步 下载安装 一.主要因为现在mysql官网yum直接推送mysql8,mysql5.1,然而mysql8不稳定,mysql5.1版本又太低,要想用旧版本5.6就先下载相应的依赖包,安装好依赖包, ...
- python函数篇0-1
创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用. 类就是一个模板,模板里可以包含多个函数, ...
- 怎样理解String的slice(), subString(), substr()三个方法
String.prototype.slice() 是js字符串的切片工具方法, 用于对字符串做'裁剪'操作, 不改变原字符串. 'helloworld'.slice(0,5); // 'hello'; ...
- work mark
<detection name="tracking" open="1" shape="rect" rect="(608,16 ...
- mqtt协议实现 java服务端推送功能(三)项目中给多个用户推送功能
接着上一篇说,上一篇的TOPIC是写死的,然而在实际项目中要给不同用户 也就是不同的topic进行推送 所以要写活 package com.fh.controller.information.push ...
- php操作 cookie
1,设置cookie <?php setcookie('key'); setcookie('key1','value1'); setcookie(***); setcookie('key4', ...
- element-ui select
1. 组合 label <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...