Gym 101194H / UVALive 7904 - Great Cells - [数学题+快速幂][2016 EC-Final Problem H]
题目链接:
http://codeforces.com/gym/101194/attachments
题意:
给出 $N$ 行 $M$ 列的网格,每个格子内可以填入 $[1,K]$ 内的任意整数。
如果某个格子,它是它所在行上严格最大的,同时也是所在列上严格最大的,则认为这个格子是好格子。
对于一个非负整数 $g$,可以有 $A_g$ 种填法使得网格内好格子数目正好为 $g$。
现在要求 $\sum_{g=0}^{NM}(g+1) A_g$,输出答案模 $1e9+7$ 后的结果。
题解:
首先,一个 $N \times M$ 的网格最多有 $\min(N,M)$ 个好格子,不可能更多了,因此 $\sum_{g=0}^{NM}(g+1) A_g = \sum_{g=0}^{\min(N,M)}(g+1) A_g$。
又 $\sum_{g=0}^{\min(N,M)}(g+1) A_g = \sum_{g=0}^{\min(N,M)}g\cdot A_g + \sum_{g=0}^{\min(N,M)} A_g$,
显然,$\sum_{g=0}^{\min(N,M)} A_g$ 即 $[1,K]$ 内的数无限制任意填入网格的所有填法数目 $K^{NM}$。
那么剩下来就是求 $\sum_{g=0}^{\min(N,M)}g\cdot A_g$:
单独考虑 $g \cdot A_g$ 的意义,现在我每一种能产生 $g$ 个好格子的方案,都要乘上一个 $g$。相当于对这 $g$ 个格子里的每个格子都累计上一个方案数 $A_g$。
那么换言之,$\sum_{g=0}^{\min(N,M)} A_g$ 就相当于,对每个格子让其成为好格子的方案数的累加。
而某一个格子,可以使得它成为好格子的填法有 $\sum_{i=2}^{K}(i-1)^{n-1+m-1}\cdot K^{(N-1)(M-1)}$ 种,
总共 $N \times M$ 个好格子,因此 $\sum_{g=0}^{\min(N,M)}g\cdot A_g = NM \sum_{i=2}^{K}(i-1)^{n-1+m-1}\cdot K^{(N-1)(M-1)}$。
综上,答案为 $\sum_{g=0}^{NM}(g+1) A_g = K^{NM} + NM \sum_{i=2}^{K}(i-1)^{n-1+m-1}\cdot K^{(N-1)(M-1)}$。
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+;
int n,m,k;
ll fpow(ll a,ll n)
{
ll res=,base=a%mod;
while(n)
{
if(n&) res*=base, res%=mod;
base*=base, base%=mod;
n>>=;
}
return res%mod;
}
int main()
{
int T;
cin>>T;
for(int kase=;kase<=T;kase++)
{
cin>>n>>m>>k;
ll ans=;
for(int i=;i<=k;i++)
{
ans+=fpow(i-,n+m-)*fpow(k,(n-)*(m-))%mod;
ans%=mod;
}
ans*=(n*m)%mod, ans%=mod;
ans+=fpow(k,n*m), ans%=mod;
printf("Case #%d: %lld\n",kase,ans);
}
}
Gym 101194H / UVALive 7904 - Great Cells - [数学题+快速幂][2016 EC-Final Problem H]的更多相关文章
- UVaLive 7361 Immortal Porpoises (矩阵快速幂)
题意:求Fibonacci的第 n 项. 析:矩阵快速幂,如果不懂请看http://www.cnblogs.com/dwtfukgv/articles/5595078.html 是不是很好懂呢. 代码 ...
- Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
- Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
- Gym 102056L - Eventual … Journey - [分类讨论][The 2018 ICPC Asia-East Continent Final Problem L]
题目链接:https://codeforces.com/gym/102056/problem/L LCR is really an incredible being. Thinking so, sit ...
- All X_数的快速幂
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission( ...
- HDU 6185 Covering 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6185 题意:用 1 * 2 的小长方形完全覆盖 4 * n的矩形有多少方案. 解法:小范围是一个经典题 ...
- Codeforces Round #536 (Div. 2) F 矩阵快速幂 + bsgs(新坑) + exgcd(新坑) + 欧拉降幂
https://codeforces.com/contest/1106/problem/F 题意 数列公式为\(f_i=(f^{b_1}_{i-1}*f^{b_2}_{i-2}*...*f^{b_k} ...
- CH0101 a^b、 CH0102 64位整数乘法(快速幂、快速乘)【模板题】
题目链接:传送门 //a^b 传送门 //64位整数乘法 题目: 描述 求 a 的 b 次方对 p 取模的值,其中 ≤a,b,p≤^ 输入格式 三个用空格隔开的整数a,b和p. 输出格 ...
- Educational Codeforces Round 60 D dp + 矩阵快速幂
https://codeforces.com/contest/1117/problem/D 题意 有n个特殊宝石(n<=1e18),每个特殊宝石可以分解成m个普通宝石(m<=100),问组 ...
随机推荐
- 为什么虚拟 dom 会提高性能?
虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法避免了没有必要的 dom 操作,从而提高性能.用 JavaScript 对象结构表示 DOM 树的结构:然后 ...
- python - Linux C调用Python 函数
1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...
- csharp C#数字字符串排序orderby的问题解决
一般情况下 您使用 strs.OrderBy(n=>n) 得出的结论是 1, 11,111,2,22,222想要得出 1,2,11,22,111,222 咋办?源码送上 static void ...
- 文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法
在文档集界面中显示Word文档,是文档大师的一个核心功能. 最近在 Win10 升级到最新版后,发现 无法正常显示Office 文档的问题. 一开始以为是Word版本问题,从2007升级到2016,问 ...
- python(61):str 和 bytes 转换
str 和 bytes 转换 b = b"example" # str object s = "example" # str to bytes bytes(s, ...
- Troubleshooting Scheduler Autotask Issues (Doc ID 1561498.1)
In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterp ...
- 5款最好的免费在线网站CSS验证器
这里是一个名单, 5免费在线CSS验证器的网站.这些网站让你验证你的CSS代码的自由,没有任何麻烦.你可以选择上传文件,验证CSS添加URL,或简单的复制和粘贴完整的CSS代码.好的方面是,这些网站不 ...
- 【iCore4 双核心板_uC/OS-II】例程二:任务的建立与删除
一.实验说明: 本例程建立三个任务,通过任务寄存器来实现任务的建立与删除功能.红灯和绿灯同时以固定 频率闪烁,当任务寄存器为5时,删除绿灯闪烁的任务LED1,此时只有红灯闪烁,当任务寄存器的 值为10 ...
- sfc /scannow命令如何能用虚拟光驱完成修复?(xp下的办法)
我们先光盘文件或用WinRAR压缩软件将ISO文件解压缩到本地磁盘某目录下,如e:\winxp: 在ISO文件上右击,在弹出的菜单中选择“解压到”: 文件较多,久等一会解压完成后文件夹下有很多 ...
- 看雪CTF第八题
IDA查看Exports有3个TlsCallback 只有TlsCallback_2有用 其中创建6个线程用于代码动态解码smc 只有前三个线程有用 分别对check_part1,check_part ...