首页 > 代码库 > 藏妹子之处(excel)(C++)

藏妹子之处(excel)(C++)

 

收 藏   
藏妹子之处(excel)
难度级别:C; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
试题描述

今天CZY又找到了三个妹子,有着收藏爱好的他想要找三个地方将妹子们藏起来,将一片空地抽象成一个R行C列的表格,CZY要选出3个单元格。但要满足如下的两个条件:
(1)任意两个单元格都不在同一行。
(2)任意两个单元格都不在同一列。
选取格子存在一个花费,而这个花费是三个格子两两之间曼哈顿距离的和(如(x1,y1)和(x,y2)的曼哈顿距离为|x1-x2|+|y1-y2|)。狗狗想知道的是,花费在minT到maxT之间的方案数有多少。
答案模1000000007。所谓的两种不同方案是指:只要它选中的单元格有一个不同,就认为是不同的方案。

输入
一行,4个整数,R、C、minT、maxT。3≤R,C≤4000, 1≤minT≤maxT≤20000。
对于30%的数据,  3 ≤ R, C ≤ 70。
输出
一个整数,表示不同的选择方案数量模1000000007后的结果。 
输入示例
6 19 4 18776 
输出示例
116280 

#include<cstdio>
#include<iostream>
#define mod 1000000007
#define LL long long
using namespace std;
LL ans;
int n,m,mx,mn;
int main()
{

scanf("%d%d%d%d",&n,&m,&mn,&mx);
for (int i=3;i<=n;i++)
for (int j=3;j<=m;j++)
{
int w=2*(i+j-2);
if (w<=mx&&w>=mn)ans+=(LL) (n-i+1)*(m-j+1)*(i-2)*(j-2)%mod;
}
printf("%lld\n",(ans*6)%mod);
}

藏妹子之处(excel)(C++)