51Nod 1667 概率好题 - 容斥原理
题目传送门
题目大意
若$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 概率好题 - 容斥原理的更多相关文章
- 51nod 1667 概率好题
Description: 甲乙进行比赛. 他们各有k1,k2个集合[Li,Ri] 每次随机从他们拥有的每个集合中都取出一个数 S1=sigma甲取出的数,S2同理 若S1>S2甲胜 若S1=S2 ...
- 51nod 1486 大大走格子(容斥原理)
1486 大大走格子 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有一个h行w列的棋盘,里面有一些格子是不能走的,现在要 ...
- 51nod 1678 lyk与gcd | 容斥原理
51nod 200题辣ψ(`∇´)ψ !庆祝! 51nod 1678 lyk与gcd | 容斥原理 题面 这天,lyk又和gcd杠上了. 它拥有一个n个数的数列,它想实现两种操作. 1:将 ai 改为 ...
- 【51nod 1667】概率好题
题目 甲乙进行比赛. 他们各有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 题目大意:每一次给你你一个数,然后对于每一次操作,可以将当前的数的每一位互换,如果互换后的数小于 ...
随机推荐
- cocos2d-x JS 纯代码加载播放plist与png动画
var cache = cc.spriteFrameCache; cache.addSpriteFrames(plist, png); var frames = []; for (var i = 1; ...
- cocos2dx - JS - 碰撞检测
碰撞检测是游戏的一个重要组成部分,我们这里使用一种最简单的方法,就是获取精灵的矩形碰撞框.当然圆形的碰撞检测也比较简单,其他形状就复杂多了.首先是如何获取矩形碰撞框:var hBox=this.her ...
- recover database noredo时报错ORA-19573
环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC 今天发现DG备库归档空间满,清理后发现备库出现GAP,需要从主库做基于SCN的增量备份进 ...
- ASP.Net Core 2.2 MVC入门到基本使用系列 (一)(转)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- FutureTask demo
package com.xinwei.order.entity; import java.util.concurrent.ExecutorService; import java.util.concu ...
- DBA角色职责
MySQL DBA分架构DBA,运维DBA和开发DBA三种角色,职责介绍如下: MySQL数据库系统日常管理职责 日常管理的主要职责是对MySQL服务器程序mysqld的运行情况进行管理,使数据库用户 ...
- 针对IE6,IE7,IE8,IE9,FF等不同浏览器的CSS写法
首先我们介绍一下HACK原理,就是不同浏览器对字符的识别不同 在 CSS中常用特殊字符识别表: (1)*: IE6+IE7都能识别*,而标准浏览器FF+IE8是不能识别*的; (2)!importan ...
- html5-移动端布局模板
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 更换tomcat运行日志目录
1.在tomcat安装文件夹的bin目录下,修改catalina.sh,改变catalina.out的输出目录 CATALINA_OUT="$CATALINA_BASE"/logs ...
- Spark学习之路 (六)Spark Transformation和Action
Transformation算子 基本的初始化 java static SparkConf conf = null; static JavaSparkContext sc = null; static ...