刘汝佳书上的题目。他把漂亮的拉拉队直接说是石子了= =。
容斥原理,用4个二进制数表示上下左右四个方向上是否有拉拉队员。1表示没有,0表示有。然后一共16种情况,奇加偶减。贴个代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int mod = 1000007;
int C[410][510];
void calC()
{
for(int i=0;i<=400;i++)
{
C[i][0]=1;
for(int j=1;j<=i;j++)
{
C[i][j] = (C[i-1][j] + C[i-1][j-1])%mod;
}
}
}
int cas=1;
void work()
{
int m,n,k;
scanf("%d%d%d",&n,&m,&k);
int ans=0;
for(int i=0;i<16;i++)
{
int row=m,col=n;
bool flag = false;
if(i&1)
{
flag=!flag;
row--;
}
if(i&2)
{
flag=!flag;
row--;
}
if(i&4)
{
flag=!flag;
col--;
}
if(i&8)
{
flag=!flag;
col--;
}
if(flag)
ans = (ans-C[row*col][k])%mod;
else
ans = (ans+C[row*col][k])%mod;
}
printf("Case %d: %d\n", cas++, (ans+mod)%mod);
}
int main()
{
calC();
int T;
scanf("%d",&T);
while(T--) work();
}