题目

甲乙进行比赛。

他们各有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\)

所以

\[\sum L1[i]+x_i>\sum R2[i]-y_i
\]

移项

\[\sum x_i +\sum y_i>\sum R2[i]-\sum L1[i]
\]

设k

\[\sum x_i +\sum y_i-1>=\sum R2[i]-\sum L1[i]+k
\]

然后就可以容斥了,

枚举至少t个数超出范围,容斥系数为(-1)^k,用插板法求值。

  1. #include <cmath>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cstring>
  6. #include <algorithm>
  7. const int inf=2147483647;
  8. const long long mo=1e9+7;
  9. const int N=10;
  10. int T,n,m,lim[N],lim1[N],L[N],R[N],L1[N],R1[N];
  11. long long ans,ny[N*3],an[3];
  12. using namespace std;
  13. long long ksm(long long x,int y)
  14. {
  15. long long s=1;
  16. for(;y;y>>=1,x=x*x%mo)
  17. if(y&1) s=s*x%mo;
  18. return s;
  19. }
  20. long long C(long long n,long long m)
  21. {
  22. long long s=1;
  23. for(long long i=0;i<m;i++) s=s*(n-i)%mo;
  24. s=s*ny[m]%mo;
  25. return s;
  26. }
  27. void dg(int x,int y,int s,int op)
  28. {
  29. if(x>n+m)
  30. {
  31. if(s<0) return;
  32. ans=(ans+(y&1?-1:1)*C(s+n+m+op-1,n+m+op-1)+mo)%mo;
  33. return;
  34. }
  35. dg(x+1,y,s,op),dg(x+1,y+1,x<=n?s-lim[x]-1:s-lim1[x-n]-1,op);
  36. }
  37. int main()
  38. {
  39. ny[0]=ny[1]=1;
  40. for(int i=2;i<=20;i++) ny[i]=(mo-mo/i)*ny[mo%i]%mo;
  41. for(int i=2;i<=20;i++) ny[i]=ny[i-1]*ny[i]%mo;
  42. for(scanf("%d",&T);T--;)
  43. {
  44. scanf("%d",&n);
  45. long long num=1;
  46. 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;
  47. scanf("%d",&m);
  48. 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;
  49. int s=-1;
  50. for(int i=1;i<=n;i++) s-=L[i];
  51. for(int i=1;i<=m;i++) s+=R1[i];
  52. ans=0,dg(1,0,s,1),an[2]=1ll*ans*ksm(num,mo-2)%mo;
  53. ans=0,dg(1,0,s+1,0),an[1]=1ll*ans*ksm(num,mo-2)%mo;
  54. an[0]=(1-an[1]-an[2]+mo*2)%mo;
  55. printf("%lld %lld %lld\n",an[0],an[1],an[2]);
  56. }
  57. }

【51nod 1667】概率好题的更多相关文章

  1. 51Nod 1667 概率好题 - 容斥原理

    题目传送门 无障碍通道 有障碍通道 题目大意 若$L_{i}\leqslant x_{i} \leqslant R_{i}$,求$\sum x_{i} = 0$以及$\sum x_{i} < 0 ...

  2. 51nod 1667 概率好题

    Description: 甲乙进行比赛. 他们各有k1,k2个集合[Li,Ri] 每次随机从他们拥有的每个集合中都取出一个数 S1=sigma甲取出的数,S2同理 若S1>S2甲胜 若S1=S2 ...

  3. 【CF913F】Strongly Connected Tournament 概率神题

    [CF913F]Strongly Connected Tournament 题意:有n个人进行如下锦标赛: 1.所有人都和所有其他的人进行一场比赛,其中标号为i的人打赢标号为j的人(i<j)的概 ...

  4. 51nod 1105 二分好题

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1105 1105 第K大的数 基准时间限制:1 秒 空间限制:131072 ...

  5. 51nod 80分算法题

    1537:见前几篇. 1627:题意:给定n,m的网格(10^5),初始状态为(1,1),你每次可以瞬移到右下方(不可以同行同列逗留)任何一个方格里,求移动到n,m的方案数. 一句话题解:首先很容易想 ...

  6. 概率好题 Light OJ 1027

    题目大意:你在迷宫里,有n扇门,每个门有一个val,这个val可正可负,每次通过一扇门需要abs(x)分钟,如果这个门的val是正的,那么就直接出了迷宫,否则回到原地,问出去迷宫的期望是多少? 思路: ...

  7. A - Arcade Game Gym - 100814A (概率思维题)

    题目链接:https://cn.vjudge.net/contest/285964#problem/A 题目大意:每一次给你你一个数,然后对于每一次操作,可以将当前的数的每一位互换,如果互换后的数小于 ...

  8. LightOJ 1218 概率水题(几何分布)

    题意:给你一个n面骰子,问你投出所有面需要的次数的期望值是多少. 题解:放在过去估计秒解,结果现在自己想好久,还查了下,有人用极限证明...实际上仔细想想这种情况投出与前面不一样的概率p的倒数就是次数 ...

  9. 51nod1667 概率好题

    基准时间限制:4 秒 空间限制:131072 KB 分值: 640  甲乙进行比赛. 他们各有k1,k2个集合[Li,Ri] 每次随机从他们拥有的每个集合中都取出一个数 S1=sigma甲取出的数,S ...

随机推荐

  1. [转帖]Xenix — 微软与UNIX的短暂爱恋

    Xenix — 微软与UNIX的短暂爱恋 https://www.linuxdashen.com/xenix-微软与unix的短暂爱恋 原来微软曾经 干过那么牛B的 unix系统. 微软向外宣布Mic ...

  2. web/服务器知识

    一 PV 推到出 QPS 你想建设一个能承受500万PV/每天的网站吗? 500万PV是什么概念?服务器每秒要处理多少个请求才能应对?如果计算呢?? PV是什么:PV是page view的简写.PV是 ...

  3. 【C++11应用】基于C++11及std::thread实现的线程池

    目录 基于C++11及std::thread实现的线程池 基于C++11及std::thread实现的线程池 线程池源码: #pragma once #include <functional&g ...

  4. 第一次入坑docker

    直接进入主题 1.首先获取git clone项目 2.创建镜像:docker build -t="docker" .(注意千万不要忘了.) 3.列出镜像:docker images ...

  5. tp5项目报错no input file specified解决

    关于这个问题众多解决方案 1.php版本问题>5.6,把php版本改成5.5版本 2.入口文件同级目录下的.htaccess文件 RewriteRule ^(.*)$ index.php/$1 ...

  6. Jmeter之TCP取样器

    1.在线程组中添加“TCP取样器” 2.填写数据 以下截图是必须配置的 TCPClient classname:  填写TCP报文格式(有三类),默认前缀:org.apache.jmeter.prot ...

  7. Graph、DFS、BFS

    Graph.java package Graph; import LinearLIst.bag.Bag; import edu.princeton.cs.algs4.In; public class ...

  8. API接口利用ActionFilterAttribute实现接口耗时检测

    1.主要代码 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; ...

  9. React高阶组件学习笔记

    高阶函数的基本概念: 函数可以作为参数被传递,函数可以作为函数值输出. 高阶组件基本概念: 高阶组件就说接受一个组件作为参数,并返回一个新组件的函数. 为什么需要高阶组件 多个组件都需要某个相同的功能 ...

  10. LeetCode:620.有趣的电影

    题目链接:https://leetcode-cn.com/problems/not-boring-movies/ 题目 某城市开了一家新的电影院,吸引了很多人过来看电影.该电影院特别注意用户体验,专门 ...