2016 China Final H - Great Cells

/*************************************************************************
    > File Name: H.cpp
    > Author: LyuCheng
    > Created Time: 2017-12-02 19:29
    > Description:
        题意:一个n×m的矩阵,填[1,k]的数,一个格子如果是所在行,列,严格最
            的,那么这个格子叫做Great cell,求segma(g=0...n*m)((g+1)*Ag)
            Ag是有g个Great cell的填法
        思路:式子化简为 segma(g=0...n*m)(g*Ag)+segma(g=0..n*m)(Ag);
            后一项就是所有Ag的和,也就是总的状态为 k^(n+m),前一项为
            segma(g=0...n*m)(Ag+Ag+...Ag)(总共有g个) 也就是说每一个方案数
            里面有g个Great cell,每一个Great cell对总结果贡献1,所以,
            最后就是 所有格子作为Great cell的情况的总和
 ************************************************************************/

#include <bits/stdc++.h>

#define MOD 1000000007
#define LL long long

using namespace std;

int t;
int n,m,k;
LL res;

inline LL power(LL a,LL b){
    if(b==0)
        return 1;
    LL cnt=power(a,b/2);
    cnt=cnt*cnt%MOD;
    if(b&1) cnt=cnt*a%MOD;
    return cnt;
}

inline void init(){
    res=0;
}

int main(){
    scanf("%d",&t);
    for(int ca=1;ca<=t;ca++){
        printf("Case #%d: ",ca);
        init();
        scanf("%d%d%d",&n,&m,&k);
        if(n==1&&m==1){
            printf("%d\n",2*k);
            continue;
        }
        res+=power(k,n*m);
        res%=MOD;
        for(int i=1;i<=k;i++){
            res+=((n*m)%MOD*power(i-1,n+m-2)%MOD*power(k,(n-1)*(m-1))%MOD)%MOD;
            res%=MOD;
        }
        printf("%d\n",res);
    }
    return 0;
}
时间: 2024-08-30 16:16:31

2016 China Final H - Great Cells的相关文章

2016 China Final E - Bet

/************************************************************************* > File Name: E.cpp > Author: LyuCheng > Created Time: 2017-12-02 20:38 > Description: 题意:有n各队比赛,每个队的赔率是A:B 就是说你下注x元,赢了你会得到 额外的 B/A*x的钱,问你最多买多少队,能保证哪个队赢,你都会赚钱 思路:假设每个队下注

【费用流】 ICPC 2016 China Final J. Mr.Panda and TubeMaster

表示“必须选”的模型 题目大意 题目分析 一个格子有四种方式看上去很难处理.将横竖两个方向分开考虑,会发现:因为收益只与相邻格子是否连通有关,所以可以将一个格子拆成表示横竖两个方向的,互相独立的点. 上图的格子里四个方向红边表示的就是一个格子的可能方向:拆点后所连蓝边的容量为1,费用即为连通两个格子的收益. 但是这样建图不能够表示某些格子必须要选. 考虑一个格子如果被选择了会发生什么:因为每个格子都处在环上,那么被选择的网格一定可以通过其他节点走到汇点.这意味着一个格子拆成的两个节点之间的边就可

哈尔滨理工大学2016新生赛H题

陈月亮最喜欢的季节就是冬天了,这不看着窗外飘起了雪花,陈月亮开心的跑出屋来看雪.但是迷迷糊糊的陈月亮不知道自己是在做梦还是真的下起了雪.突然她想起了一句话,在真实世界中是没有两片一样的雪花的.于是你的任务就是比较这场雪中的所有雪花,如果出现了两朵完全一致的雪花,则证明陈月亮是在梦中. 每朵雪花用六个整数表示,范围在(1 – 10000000)之间,表示雪花六个花瓣的长度,六个整数的先后出现顺序可能是顺时针顺序也可能是逆时针顺序,并且可能是从任意一个花瓣开始的.比如说对同一个花瓣,描述方法可能是1

CF [2016-2017 ACM-ICPC CHINA-Final][GYM 101194 H] Great Cells

很久以前做的一道思博题了,今天来补一补. 大致题意:在一个\(n*m\)的矩阵内填整数,数字在\([1,k]\)范围内.矩阵中某格的数为great number当且仅当与它同行同列的数字都严格比它小.记\(A_g\)为矩阵中恰有\(g\)个great number的填数方案数,求\(\sum_{g=0}^{nm}(g+1)\cdot A_g\).(\(n,m,k\le200\)) 首先我们可以看出,上界必定是\(min(n,m)\),这个不解释了吧 而又有一个性质,\(\sum_{g=0}^{m

2016中国(北京)国际大数据产业博览会暨高峰论坛

  收件人:展览会负责人                 发件人: 邢春雷 2016中国(北京)国际大数据产业博览会暨高峰论坛 2016 China (Beijing) International Big DataIndustry Exhibition and Summit Forum 超大规模展出, 全国领先企业汇集, 一站式采购交易平台 时间:2016年9月12日-14日   地点:北京·中国国际展览中心(老馆)   [展会概况]                               

Java final修饰符

final的定义: 在英文层面上,final的意思是"最后的","最终的"意思,在Java中也同样表示出此种含义. final的运用对象: final适用于修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. final修饰类: 由于final定以后的对象不能进行修改和重载,用final修饰的类不能被继承,即不能拥有自己的子类.如果视图对一个已经用final修饰的类进行继承,在编译期间或发生错误. final修饰变量: 一旦定义了fi

Gym - 101194H Great Cells

题目链接:https://codeforces.com/gym/101194/attachments Problem H. Great Cells Input file: Standard Input Output file: Standard Ouptut Time limit: 2 seconds 题目大意: 在N×M的网格里填[1,K]的整数,如果满足这个格子中的数是本行和本列中严格的最大值,定义这个格子是great的.定义A-g为网格中恰好有g个great格子的填法数,求Σ(g+1)A-

Dr Wei Min Huang

 Curriculum Vitae Dr Wei Min Huang is currently an Associate Professor (tenured) at the School of Mechanical and Aerospace Engineering, Nanyang Technological University, Singapore. With over 20 years of experience on various shape memory materials (a

CURRICULUM VITAE

Dr.  YUE  XIAO Professor National Key Lab of Communication Science and Technology on Communications University of Electronic Science and Technology of China (UESTC) No.2006, Xiyuan Ave, West Hi-Tech Zone, Chengdu, 611731, P.R.China Email: [email prot