这个嘛…容斥原理推一推公式就好啦>..<

选定i行,j列,k种颜色
i行可有颜色,也可没有,没有选的不能有涂色
j列类似
k种颜色可出现也可不出现,没有选颜色的不能用
这个有(k+1)ij(k+1)^{ij}种方案

那么总答案就是

∑i=0N∑j=0M∑k=0CCiNCjMCkC(−1)N+M+C−i−j−k(k+1)ij

\sum_{i=0}^{N}\sum_{j=0}^{M}\sum_{k=0}^{C}C_{N}^{i}C_{M}^{j}C_{C}^{k}(-1)^{N+M+C-i-j-k}(k+1)^{ij}

我们显然不能接受O(NMC)的复杂度,然而题中400的数据范围奥妙重重,让这个算法水过了>..<我非常不开心

那么我们来想想怎么优化吧

有一个非常显而易见的多项式展开的公式

(X+1)Y=∑i=0YCiY∗Xi

(X+1)^{Y}=\sum_{i=0}^{Y}C_{Y}^{i}*X^i
我们倒着来

原式稍稍变一下形

∑i=0N∑k=0C(CiNCkC(−1)N+M+C−i−k  ∑j=0MCjM(−1)j((k+1)i)j)

\sum_{i=0}^{N}\sum_{k=0}^{C}(C_{N}^{i}C_{C}^{k}(-1)^{N+M+C-i-k}~~\sum_{j=0}^{M}C_{M}^{j}(-1)^j((k+1)^i)^j)

右边那个sigma的右边是不是和多项式展开公式形似呢,嘿嘿嘿

∑i=0N∑k=0C(CiNCkC(−1)N+M+C−i−k(1−(k+1)i)M)

\sum_{i=0}^{N}\sum_{k=0}^{C}(C_{N}^{i}C_{C}^{k}(-1)^{N+M+C-i-k}(1-(k+1)^i)^M)

于是时间就变成O(NClogM)啦>..<
O(NMC)水过的,是异端,要批斗

#include <cstdio>
const int MOD = 1000000007;
long long CC[401][401], POW[402][401], OUT, BASE, LOW;
int N, M, C;
inline int inv(int x)
{return x & 1 ? MOD - 1 : 1;
}
long long POWER(long long a, int b)
{long long r = 1;for (; b; b >>= 1){if (b & 1)r = r * a % MOD;a = a * a % MOD;}return r;
}
int main()
{scanf("%d%d%d", &N, &M, &C);for (int i = 0; i <= N || i <= C; i++){CC[i][0] = 1;for (int j = 1; j <= i; j++){CC[i][j] = CC[i - 1][j - 1] + CC[i - 1][j];if (CC[i][j] >= MOD)CC[i][j] -= MOD;}}for (int i = 1; i <= C + 1; i++){POW[i][0] = 1;for (int j = 1; j <= N; j++)POW[i][j] = POW[i][j - 1] * i % MOD;}for (int i = 0; i <= C; i++)for (int j = 0; j <= N; j++){BASE = CC[C][i] * CC[N][j] % MOD * inv(N ^ M ^ C ^ i ^ j) % MOD;LOW = (MOD - POW[i + 1][j]) + 1;if (LOW >= MOD)LOW -= MOD;OUT += BASE * POWER(LOW, M) % MOD;if (OUT >= MOD)OUT -= MOD;}printf("%lld\n", OUT);return 0;
}

[BZOJ4487] [JSOI2015]染色问题相关推荐

  1. BZOJ4487 JSOI2015染色问题(组合数学+容斥原理)

    逐个去除限制.第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数-- 然后是限制二.同样可以容斥,即恰好选n行的方案数=至 ...

  2. BZOJ4487 [JSO12015] 染色问题 容斥原理

    给出一个n×m,n,m≤4e2n×m,n,m\leq4e2n×m,n,m≤4e2的矩阵,并且有c≤4e2c\leq4e2c≤4e2种颜色,对于每一个小方格,你可以任选一个给它染色.给出条件:每个小方格 ...

  3. bzoj 4487: [Jsoi2015]染色问题

    先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...

  4. [暑假的bzoj刷水记录]

    (这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...

  5. ZJOI2019一轮停课刷题记录

    Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...

  6. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

  7. [BZOJ4033][HAOI2015]树上染色

    4033: [HAOI2015]树上染色 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2108  Solved: 901 [Submit][Sta ...

  8. 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...

    本文原创于  2014-02-12 09:26. 今复习之用,有新体会,故重新编辑. 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有 ...

  9. 【Codeforces】1080C Masha and two friends (棋盘染色)

    http://codeforces.com/problemset/problem/1080/C 给定一个棋盘,(1,1)的位置是白色,观察可以知道,如果横纵坐标之和是偶数,那么是白色,奇数的话就是黑色 ...

  10. Luogu P3177 [HAOI2015] 树上染色(树上背包)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P3177 [HAOI2015] 树上染色 有一棵点数为 NNN 的树,树边有边权.给你一 ...

最新文章

  1. Webpack学习-Loader
  2. 我为什么要做游戏化教养项目
  3. 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
  4. 微内核和宏内核的区别_8086微处理器中的过程和宏之间的区别
  5. 慎用dictionaryWithObjectsAndKeys方法
  6. Centos7 修改主机名
  7. 前端知识天天学(4)
  8. mysql存过游标_mysql存储过程游标使用
  9. 过极验滑块破解-小米商城app过滑块
  10. 截图软件 : Snipaste
  11. oracle 统计每天新增订单数量
  12. css轮播箭头怎么隐藏,css实现带箭头和圆点的轮播
  13. 计算机专业哪些竞赛含金量高,盘点国内五大高含金量的编程赛事
  14. c语言大小写字母变换,C语言学习:任意大小写字母转换
  15. prefetch_related和select_related的区别
  16. Mysql的高可用架构搭建(MHA)
  17. python+selenium+chrome实现淘宝购物车秒杀自动结算
  18. 关于计算优惠券金额的部分优化
  19. 【unity-Max】A polygon of Mesh ‘XXX‘ in Assets/XXX/XXX.FBX is self-intersecting and has been discarded
  20. 暗影格斗3服务器响应比预期,暗影格斗3代码问题导致无法正常游戏

热门文章

  1. IDEA提示“Spring Configuration Check“ “Unmapped Spring configuration files found.“
  2. Android 免费云真机
  3. python实用脚本(三)—— 通过有道智云API实现翻译
  4. win10下安装PyCharm以及激活
  5. python3.6 添加tab键功能
  6. 重整国家资产负债表的核心是谁来买单
  7. Android系统启动源码分析
  8. Mysql之Specified key was too long; max key length is 767 bytes
  9. 创建json格式文件
  10. 华为路由器配置IPSec (手动配置)