题目传送门

  无障碍通道

  有障碍通道

题目大意

  若$L_{i}\leqslant x_{i} \leqslant R_{i}$,求$\sum x_{i} = 0$以及$\sum x_{i} < 0$的方案数。$(L_{i}R_{i} \geqslant 0)$(好吧。是概率)

  听完题解感觉自己是个傻逼。组合数学白学了。

  如果$L_{i} \neq 0$,那么取$a_{i} = x_{i} - L_{i}$。

  然后容斥。

  如何处理$\sum x_{i} < 0$?加一个物品$0\leqslant x_{n + 1} < \infty $。

  然后做完了。

Code

 /**
* 51nod
* Problem#1667
* Accepted
* Time: 187ms
* Memory: 2052k
*/
#include <bits/stdc++.h>
using namespace std;
typedef bool boolean; const int M = 1e9 + ;
const signed int inf = (signed) (~0u >> ); void exgcd(int a, int b, int& x, int& y) {
if (!b)
x = , y = ;
else {
exgcd(b, a % b, y, x);
y -= (a / b) * x;
}
} int inv(int a, int n) {
int x, y;
exgcd(a, n, x, y);
return (x < ) ? (x + n) : (x);
} int add(int a, int b) {
a += b;
if (a < )
a += M;
if (a >= M)
a -= M;
return a;
} int invs[];
int n, m;
int K = ;
int rw = , req = , rl, rall = ;
int ar[]; inline void prepare() {
for (int i = ; i <= ; i++)
invs[i] = inv(i, M);
} inline void init() {
scanf("%d", &n);
rw = req = , rall = , K = ;
for (int i = , l, r; i < n; i++)
scanf("%d%d", &l, &r), ar[i] = r - l, K -= l, rall = rall * 1ll * (ar[i] + ) % M;
scanf("%d", &m);
for (int i = , l, r; i < m; i++)
scanf("%d%d", &l, &r), ar[n + i] = r - l, K += r, rall = rall * 1ll * (ar[n + i] + ) % M;
n += m;
} int C(int n, int m) {
int rt = ;
for (int i = ; i < m; i++)
rt = rt * 1ll * (n - i) % M;
for (int i = ; i <= m; i++)
rt = rt * 1ll * invs[i] % M;
return rt;
} int calc(int dep, int sign, int K) {
if (K < )
return ;
if (dep == -)
return sign * C(K + n - , n - );
return add(calc(dep - , -sign, K - ar[dep] - ), calc(dep - , sign, K));
} inline void solve() {
req = calc(n - , , K);
ar[n++] = inf;
rw = calc(n - , , K);
rl = add(rall, -rw);
rw = add(rw, -req);
// cerr << rl << " " << req << " " << rw << endl;
rw = rw * 1ll * inv(rall, M) % M;
req = req * 1ll * inv(rall, M) % M;
rl = rl * 1ll * inv(rall, M) % M;
printf("%d %d %d\n", rl, req, rw);
} int T;
int main() {
scanf("%d", &T);
prepare();
while (T--) {
init();
solve();
}
return ;
}

51Nod 1667 概率好题 - 容斥原理的更多相关文章

  1. 51nod 1667 概率好题

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

  2. 51nod 1486 大大走格子(容斥原理)

    1486 大大走格子 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   有一个h行w列的棋盘,里面有一些格子是不能走的,现在要 ...

  3. 51nod 1678 lyk与gcd | 容斥原理

    51nod 200题辣ψ(`∇´)ψ !庆祝! 51nod 1678 lyk与gcd | 容斥原理 题面 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将 ai 改为 ...

  4. 【51nod 1667】概率好题

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

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

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

  6. 51nod 1105 二分好题

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

  7. 51nod 80分算法题

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

  8. 概率好题 Light OJ 1027

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

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

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

随机推荐

  1. cocos2d-x JS 富文本(为一段文本中的个别字体上颜色)

    setWinText : function (levelStr1,levelStr2,levelStr3,color1,color2) { var imgRankingBG = this.contai ...

  2. cocos2dx 3.x(纯代码实现弹出对话框/提示框/警告框)

    头文件: // //  PopAlertDialog.h //  macstudycocos2dx // //  Created by WangWei on 15/6/8. // // #ifndef ...

  3. python QQTableView中嵌入复选框CheckBox四种方法

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  4. VirtualBox下扩容vdi文件

    VirtualBox下扩容vdi文件 版本:VirtualBox 5.0.14 之前VirtualBox创建的虚拟机的vdi文件过小,无法满足新的实验需求,扩容vdi文件的方法如下: 比如我这里将RH ...

  5. 连接mysql && ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

    上一篇:mysql服务正在启动 mysql服务无法启动 && mysql启动脚本 mysql关闭脚本 此篇目编写一个核心目的: 1.mysql连接 先抛出一个问题 这是因为mysql服 ...

  6. 记学习hadoop时无法启动namenode的问题

    1. 按照apache的文档,学习搭建hadoop. 2. 当把机器重启之后发现无法启动 namenode. 3. 查看日志发现是一些文件找不到,这些文件的位置是在/tmp目录下的,而/tmp 目录下 ...

  7. Python记录7:函数3,函数对象

    #函数对象指的是:函数的内存地址可以像变量值一样去使用,如何使用?def func(): print('from func')#1. 可以被引用# f=func# print(f)# f() #2. ...

  8. 富文本编辑器kindeditor插件

    官网:http://kindeditor.net/doc.php 步骤

  9. python XML文件解析:用xml.dom.minidom来解析xml文件

    python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...

  10. android studio eclipse keymap theme 快捷键 主题风格设置

    android studio eclipse keymap theme 快捷键 主题风格设置 将Android Studio的快捷键设置与eclipse一致,使用习惯的快捷键才顺手.Mac系统下:进入 ...