最基本的min-max 容斥(见下方博客前端)
主要用来处理期望问题
几道例题
bzoj 4036 按位或
loj PKUSC 随机游走
还有一类简化lcm到gcd
51Nod1355:斐波那契的最小公倍数
kth min-max 容斥from zjp-shadow
例题很好!
就是把第k大的也可以反演,
积累容斥的时候推系数的通用思路:看最后要贡献的是那一部分,然后把所有的贡献的式子列出来,最后利用组合数(斯特林数)反演推出每项的容斥系数
因为n-k很小,把组合数拆分,维护组合数选k的方案数
写题之前要确认算法。一开始把n-k+1大和k大搞混了
这道题的边界情况应该从dp的意义出发,需要想清楚
#include<bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(register int i = l ; i <= r ; i++)
#define repd(i,r,l) for(register int i = r ; i >= l ; i--)
#define rvc(i,S) for(register int i = 0 ; i < (int)S.size() ; i++)
#define rvcd(i,S) for(register int i = ((int)S.size()) - 1 ; i >= 0 ; i--)
#define fore(i,x)for (register int i = head[x] ; i ; i = e[i].next)
#define forup(i,l,r) for (register int i = l ; i <= r ; i += lowbit(i))
#define fordown(i,id) for (register int i = id ; i ; i -= lowbit(i))
#define pb push_back
#define prev prev_
#define stack stack_
#define mp make_pair
#define fi first
#define se second
#define lowbit(x) (x&(-x))
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int> pr;
const ld inf = 2e18;
const int