题目传送门

  无障碍通道

  有障碍通道

题目大意

  若$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. EasyTouch中虚拟摇杆的使用EasyJoystick

    unity3d自带的虚拟摇杆显然没有EasyTouch好用 首先下载这个插件 http://pan.baidu.com/s/1hqJAbTa 下载完成后.导入到unity,可以看看里面的案例

  2. 9.用js制作静态分页

    效果如图: css 代码: #page { text-align: center; } .page { display: inline-block; } .page a { padding: 3px ...

  3. HDU 2604 Queuing(递推+矩阵)

    Queuing [题目链接]Queuing [题目类型]递推+矩阵 &题解: 这题想是早就想出来了,就坑在初始化那块,只把要用的初始化了没有把其他的赋值为0,调了3,4个小时 = = 本题是可 ...

  4. animation 老动画

    关于设置跳跃: using System.Collections; using System.Collections.Generic; using UnityEngine; public class ...

  5. LeetCode71.简化路径

    给定一个文档 (Unix-style) 的完全路径,请进行路径简化. 例如,path = "/home/", => "/home"path = " ...

  6. hbase-java-api002(flush)

    package api; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apa ...

  7. Python记录8:函数的嵌套

    #函数的嵌套分为两类:# 1.函数的嵌套定义: 在函数内部又定义了一个函数# def foo():# x=1# # print(x)# def bar():# print('from bar')## ...

  8. hdu1757 构造矩阵

    Lele now is thinking about a simple function f(x). If x < 10 f(x) = x.If x >= 10 f(x) = a0 * f ...

  9. SpringMVC探究-----常用获取传递参数的方法

       1.@RequestParam @RequestParam 常用来映射请求参数,它有三个属性可以配置: value 值即请求参数的参数名 required 该参数是否必须. 默认为 true d ...

  10. xmldecoder漏洞

    https://blog.csdn.net/youanyyou/article/details/78990312