首先要有个妹子
问题描述:
今天CZY又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格。但要满足如下的两个条件:
(1)任意两个单元格都不在同一行。
(2)任意两个单元格都不在同一列。
选取格子存在一个花费,而这个花费是三个格子两两之间曼哈顿距离的和(如$\left ( x_{1},y_{1} \right )$和$\left ( x_{2},y_{2} \right )$的曼哈顿距离为$\left | x_{1}-x_{2} \right |+\left | y_{1}-y_{2} \right |$)。狗狗想知道的是,花费在minT 到maxT 之间的方案数有多少。
答案模1000000007。所谓的两种不同方案是指:只要它选中的单元格有一个不同,就认为是不同的方案。
通过观察,不难发现在一个的矩阵中,所有最大的三个单元格曼哈顿距离相等,均为
通过简单地分析可以得出,在的矩阵中,共有组最大的三个单元格
代码就很简单了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const int mod=1000000007;
int r,c,mins,maxs;
LL ans=0;
int main()
{
scanf("%d%d%d%d",&r,&c,&mins,&maxs);
for(int i=2;i<r;i++)
for(int j=2;j<c;j++)
if (i*2+j*2<=maxs&&i*2+j*2>=mins)
ans=(ans+6LL*(r-i)*(c-j)*(i-1)*(j-1))%mod;
printf("%d",ans);
return 0;
}
依水临山 景看旧 而你美胜 山水万筹