[BZOJ4487] [JSOI2015]染色问题
这个嘛…容斥原理推一推公式就好啦>..<
选定i行,j列,k种颜色
i行可有颜色,也可没有,没有选的不能有涂色
j列类似
k种颜色可出现也可不出现,没有选颜色的不能用
这个有(k+1)ij(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}=\sum_{i=0}^{Y}C_{Y}^{i}*X^i
我们倒着来
原式稍稍变一下形
\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的右边是不是和多项式展开公式形似呢,嘿嘿嘿
\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]染色问题相关推荐
- BZOJ4487 JSOI2015染色问题(组合数学+容斥原理)
逐个去除限制.第四个限制显然可以容斥,即染恰好c种颜色的方案数=染至多c种颜色的方案数-染至多c-1种颜色的方案数+染至多c-2种颜色的方案数-- 然后是限制二.同样可以容斥,即恰好选n行的方案数=至 ...
- BZOJ4487 [JSO12015] 染色问题 容斥原理
给出一个n×m,n,m≤4e2n×m,n,m\leq4e2n×m,n,m≤4e2的矩阵,并且有c≤4e2c\leq4e2c≤4e2种颜色,对于每一个小方格,你可以任选一个给它染色.给出条件:每个小方格 ...
- bzoj 4487: [Jsoi2015]染色问题
先贴一个题解吧,最近懒得要死2333,可能是太弱的原因吧,总是扒题解,(甚至连题解都看不懂了),blog也没更新,GG http://blog.csdn.net/werkeytom_ftd/artic ...
- [暑假的bzoj刷水记录]
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊 堆一起算了 隔一段更新一下. 7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27upd ...
- ZJOI2019一轮停课刷题记录
Preface 菜鸡HL终于狗来了他的省选停课,这次的时间很长,暂定停到一试结束,不过有机会二试的话还是可以搞到4月了 这段时间的学习就变得量大而且杂了,一般以刷薄弱的知识点和补一些新的奇怪技巧为主. ...
- [C] 深度优先搜索解决连通块/染色问题——求岛的个数
本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...
- [BZOJ4033][HAOI2015]树上染色
4033: [HAOI2015]树上染色 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2108 Solved: 901 [Submit][Sta ...
- 2-sat问题,输出方案,几种方法(赵爽的论文染色解法+其完全改进版)浅析 / POJ3683...
本文原创于 2014-02-12 09:26. 今复习之用,有新体会,故重新编辑. 2014-02-12 09:26: 2-sat之第二斩!昨天看了半天论文(赵爽的和俉昱的),终于看明白了!好激动有 ...
- 【Codeforces】1080C Masha and two friends (棋盘染色)
http://codeforces.com/problemset/problem/1080/C 给定一个棋盘,(1,1)的位置是白色,观察可以知道,如果横纵坐标之和是偶数,那么是白色,奇数的话就是黑色 ...
- Luogu P3177 [HAOI2015] 树上染色(树上背包)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P3177 [HAOI2015] 树上染色 有一棵点数为 NNN 的树,树边有边权.给你一 ...
最新文章
- Webpack学习-Loader
- 我为什么要做游戏化教养项目
- 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
- 微内核和宏内核的区别_8086微处理器中的过程和宏之间的区别
- 慎用dictionaryWithObjectsAndKeys方法
- Centos7 修改主机名
- 前端知识天天学(4)
- mysql存过游标_mysql存储过程游标使用
- 过极验滑块破解-小米商城app过滑块
- 截图软件 : Snipaste
- oracle 统计每天新增订单数量
- css轮播箭头怎么隐藏,css实现带箭头和圆点的轮播
- 计算机专业哪些竞赛含金量高,盘点国内五大高含金量的编程赛事
- c语言大小写字母变换,C语言学习:任意大小写字母转换
- prefetch_related和select_related的区别
- Mysql的高可用架构搭建(MHA)
- python+selenium+chrome实现淘宝购物车秒杀自动结算
- 关于计算优惠券金额的部分优化
- 【unity-Max】A polygon of Mesh ‘XXX‘ in Assets/XXX/XXX.FBX is self-intersecting and has been discarded
- 暗影格斗3服务器响应比预期,暗影格斗3代码问题导致无法正常游戏
热门文章
- IDEA提示“Spring Configuration Check“ “Unmapped Spring configuration files found.“
- Android 免费云真机
- python实用脚本(三)—— 通过有道智云API实现翻译
- win10下安装PyCharm以及激活
- python3.6 添加tab键功能
- 重整国家资产负债表的核心是谁来买单
- Android系统启动源码分析
- Mysql之Specified key was too long; max key length is 767 bytes
- 创建json格式文件
- 华为路由器配置IPSec (手动配置)