士兵殺敵(容斥定理)

2021-09-12 05:27:31 字數 933 閱讀 3996

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述南將軍手下有n個士兵,分別編號1到n,這些士兵的殺敵數都是已知的。

小工是南將軍手下的軍師,南將軍現在想知道第m號到第n號士兵的總殺敵數,請你幫助小工來回答南將軍吧。

注意,南將軍可能會問很多次問題。

輸入

只有一組測試資料

第一行是兩個整數n,m,其中n表示士兵的個數(1

輸出對於每乙個詢問,輸出總殺敵數

每個輸出佔一行

樣例輸入

5 2

1 2 3 4 5

1 32 4

樣例輸出

6

9

思路:給出乙個n(1到1000000)大小的陣列,有m(1到100000)次詢問,每次詢問a到b的總和。

tle:

#include#define max 1000000+5

int number[max];

int main()

return 0;

}

用最傳統簡單的方法解無疑會超時。

小改進一下就可以ac:

#include#define max 1000000+5

int number[max];

int main()

//number陣列不代表i士兵的殺敵數,代表從1到i總共的殺敵數

while(m--)

return 0;

}

這種計算方法運用到一種思想:先不考慮重疊的情況,把包含於某內容中的所有物件的數目先計算出來,然後再把計數時重複計算的數目排斥出去,使得計算的結果既無遺漏又無重複,這種計數的方法稱為容斥原理。還有一種做法是運用樹狀陣列。

總結:題目雖然簡單,但是也有運用到新的演算法去解決。多接觸,多變通。

Cheerleaders(容斥定理)

題意 在乙個m行n列的矩陣裡站k個拉拉隊員,問有多少種方法,四周邊界必須有乙個隊員.這裡用到組合數加容斥定理,將重複的刪除,第一行,最後一行,第一列,最後一列.用到位運算來模擬16種情況.這裡要吐槽一下,中英文輸入法,和case中c的大小寫,wrong了無數次,最後才發現,蛋疼.include in...

Snake Rana (容斥定理)

snake rana gym 101350g 題目大意 給定乙個矩陣,和矩陣中的一些點,求矩陣中不包含這些點的子矩陣的數量 容斥原理 並集 總情況 兩個集合相交的情況情況 三個集合相交的情況 四個集合相交的情況 五個集合相交的情況 依次類推 include include using namespa...

容斥定理專題

介紹 co prime hdu 4135 用位運算生成所有可能 include include using namespace std typedef long long ll const int n 1e3 5 ll a,b,n int num ll fac n void factor if tn...