題意:
往乙個n*m的方格裡放k個石塊,問有多少種方式
最後一行,最後一列,第一行,第一列必須放至少乙個
思路:
簡單容斥一下
最後一行不放為事件r1,最後一列c1,第一行r2,第一列c2
全部情況-c1-c2-r1-r2+c1*c2+r1*r2+c1*r1+c1*r2…..
二進位制列舉一下,奇加偶減
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define lowbit(x) (x&(-x))
typedef
long
long ll;
const
int maxn = 505;
const
int inf=(1
<<28)-1;
const ll mod = 1000007;
int c[maxn][maxn];
void getc()
}}int main()
if(i&2)
if(i&4)
if(i&8)
if(c<0||r<0) continue;
if(step&1)
ans=(ans-c[c*r][k]+mod)%mod;
else
ans=(ans+c[c*r][k])%mod;
}printf("case %d: %lld\n",++case,ans);
}return
0;}
uva11806 容斥定理
n m的矩形 k個人 第一行,最後一行,第一列,最後一列都至少站有乙個人 小水題正著做不好做,要反著想,那就容斥定理,abcd四種情況分別是那四個行列分別沒有人。1 include2 include3 include4 include5 using namespace std 67 const in...
uva11806(容斥原理)拉拉隊
例題 3 拉拉隊 cheerleaders,uva 11806 在乙個m行 n列的矩形網格裡放 k個相同的石子,問有多少種方法?每 個格仔最多放乙個石子,所有石子都要用完,並且第一行 最後一行 第一列 最後一列都得有石子。輸入格式 輸入第一行為資料組數t t 50 每組資料報含 3個整數m,n,k ...
容斥 二進位制UVA 11806
問題是求四個邊都有隊員的排列組合,根據容斥原理可以轉化為對立問題的求解 全集為s c n m,k 該區域有k個隊員的全部排列組合,a 最左邊沒有隊員的全部種數,b 最右邊沒有,c 最上邊沒有,d 最下邊沒有,則答案就是屬於全集s但不屬於 a,b,c,d中任何乙個集合,根據容斥 ans s a b c...