JQUERY框架介紹
阿新 • • 發佈:2020-12-14
容斥原理
1. 容斥原理式子
\[|S_1 \cup S_2 \cup S_3 \cdots \cup S_n| = \sum_{1<i<n}|S_i| - \sum_{i<i<j<m}|S_i \cap S_j| + \sum_{1<i<j<k<m}|S_i \cap S_j \cap S_k| - \cdots + (-1)^{n-1}|S_i \cap S_j \cap S_k \cap \cdots \cap S_n| \]2. 一個不太嚴謹的證明
我們在\(|S_1 \cup S_2 \cup S_3 \cdots \cup S_n|\)
由\(\sum^{n}_{i}C^{i}_{n}\)可知這個式子一定是等於\(1\)
3. 一道簡單的例題:AcWing890.能被整除的數
題比較簡單,容斥+狀壓
#include<bits/stdc++.h> using namespace std; int p[1000]; int main() { int n,m; cin>>n>>m; for(int i=1;i<=m;i++) { cin>>p[i]; } int res=0; for(int i=1;i<=(1<<m)-1;i++) { int t=1,cnt=0; for(int j=0;j<m;j++) { if(i>>j&1) { cnt++; if((long long)t*p[j+1]>n) { t=-1; break; } t*=p[j+1]; } } if(t!=-1) { if(cnt%2) res+=n/t; else res-=n/t; } } cout<<res; return 0; }