題意: 統計網格矩形的子矩形數目,其中要求每個格仔不能包含一些特殊格仔(特殊格仔小於20)
思路:統計格仔是個老問題,sum=n*(n+1)/2*m*(m+1)/2 這裡要求一些格仔不合法,顯然用總答案減去非法答案更容易計算。
計算非法答案時k<=20是乙個提示算是,我們可以直接列舉包含的非法格仔數目,然後再容斥就好。
**:#includeusing namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define mp make_pair
#define x first
#define y second
#define bug puts("bug");
typedef long long ll;
typedef pairpii;
const double pi=acos(-1);
pii p[30];
int tmp[10];
ll sum;
ll t,a,b,n,m,k;
void dfs(int id,int pp,ll lux,ll luy,ll rdx,ll rdy){
if(pp==1) sum-=lux*luy*(n-rdx+1)*(m-rdy+1);
else sum+=lux*luy*(n-rdx+1)*(m-rdy+1);
for(int i=id+1;i>t;
while(t--){
cin>>n>>m>>k;
sum=m*(m+1)/2*n*(n+1)/2;
for(int i=0;i>p[i].x>>p[i].y;
for(int i=0;i
容斥原理 數論
兩個集合的容斥關係公式 a b a b a b a b 重合的部分 三個集合的容斥關係公式 a b c a b c a b b c c a a b c 最後可以推廣到n個集合,集合裡的元素為奇數則加,偶數減 hdu 4135 很簡單,直接求出所有的質因子,然後容斥解決 author crystal ...
容斥原理,反演
大概知道為什麼自己水平比較渣啦。一開始只會反演,然後被容斥驚豔到。然後寫了一段時間容斥,反演忘光光。所以融會貫通真的很難。多校的三道題,當時是用反演做的。事實上以前就知道容斥跟莫比烏斯函式值的關係,然後熟練掌握 然後一段時間沒用就忘了哈。簡單來說就是,求乙個數和乙個集合中的數互質的個數,把集合中乙個...
關於容斥原理
容斥原理大概是這樣的,以長方體體積並為例,我們需要用容斥原理容斥出若干個長方體體積的並.首先,我們將每個長方體標號為1 n,那麼這些長方體的取捨顯然可以表示為乙個二進位制的數字s.設f s 表示長方體取捨狀態為s時,長方體的體積並,於是我們可以知道f 111111 有n個1 就是我們最終的所求.好,...