/**
题目:2016-2017 ACM-ICPC CHINA-Final H Great Cells
链接:http://codeforces.com/gym/101194
题意:给定n*m的矩形,a[i][j]的数据范围为[1,k];
如果a[i][j]是自己所在行和所在列最大的(唯一最大的),那么这个格子就是great cell;
令Ag表示有g个great cell的矩形数量。
求: sigma[g=0,n*m](g+1)*Ag mod(1e9+7);
思路:
原式可以拆成sigma[g=0,n*m]g*Ag mod(1e9+7) + sigma[g=0,n*m]Ag mod(1e9+7);
第二个式子显然是所有矩阵数量,即:k^(n*m);
第一个式子:
注意g*Ag不要拆开,看做整体相当于求期望值,只不过舍去了分母。所以等价于求每一个格子是great cell的期望值。
所以所有格子的期望值之和就是第一个式子结果;
sigma[i=1,k]Pow(i-1,n+m-2)*Pow(k,(n-1)*(m-1))*(n*m) mod(1e9+7); i的值表示选定的格子是great cell的值,那么同行同列的n+m-2个格子就是i-1中选取。
剩下的格子(n-1)*(m-1)个都从k中选取。 总共n*m个格子的期望值之和。每个格子期望值都是一样的。 */
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<set>
#include<cstring>
#include<cmath>
using namespace std;
typedef pair<int,int> P;
typedef long long LL;
const int N = 1e5+;
const int mod = ;
const int INF = 0x3f3f3f3f;
int n, k, m;
LL Pow(LL x,int y)
{
LL p = ;
while(y)
{
if(y&) p = p*x%mod;
x = x*x%mod;
y>>=;
}
return p;
}
int main()
{
int T, cas=;
cin>>T;
while(T--)
{
scanf("%d%d%d",&n,&m,&k);
LL sum = ;
for(int i = k; i >= ; i--){
sum = (sum+Pow((LL)i-,n+m-))%mod;
}
sum = sum*Pow((LL)k,(n-)*(m-))%mod;
sum = sum*n*m%mod;
sum = (sum+Pow((LL)k,n*m))%mod;
printf("Case #%d: %I64d\n",cas++,sum);
}
return ;
}

最新文章

  1. 学习javascript数据结构(三)——集合
  2. Eclipse下无法自动编译,或者WEB-INF/classes目录下没文件,编译失败的解决办法(转载)
  3. iOS 解决表单被键盘遮住的问题
  4. run loop 输入源
  5. bower解决js库的依赖管理
  6. URLConnection的连接、超时、关闭用法总结
  7. about greenplum collection tool
  8. 比AutoMapper轻量快速简洁的实体映射库YeaJur.Mapper
  9. StringBuffer的替换和反转和截取功能
  10. solr服务器搭建
  11. shell的date日期循环方法:日期格式转时间戳计算,再将时间戳转回日期格式
  12. JS中的事件委托(事件代理)
  13. mysql修改密码方法
  14. 【洛谷P2384】最短乘积路径
  15. 【BZOJ2300】【SCOI2011】糖果
  16. VS2005的depends工具 (分析EXE)
  17. 【ORACLE】 安装需要注意的问题(一)
  18. 《TCP/IP 详解 卷1:协议》第 11 章:名称解析和域名系统
  19. Chip Factory(HDU5536 + 暴力 || 01字典树)
  20. 原生开发小程序 和 wepy 、 mpvue 对比

热门文章

  1. from表单实现无跳转上传文件,接收页面后台数据
  2. Python自然语言处理资料库
  3. Javascript code for soft keyboard
  4. [转] 一篇好文 ---steve jobs (stay hungry, stay foolish)
  5. 手写Json转换
  6. linux 遇见错误Could not get lock /var/lib/dpkg/lock
  7. Java实现二维码技术探讨。
  8. 4CIF是什么意思
  9. vue项目中provide和inject的运用
  10. array_intersect_assoc用法详解