JZOJ4870. 涂色游戏
题目大意
给定一个n×mn\times m的网格图。有pp种颜色可以用来涂在网格中。
定义一个方案是不单调的,当且仅当任意两列网格图中的颜色种类数加起来超过qq种。
求不单调的方案数。
Data Constraint
n≤100,q≤p≤100,m≤109n\leq 100,q\leq p \leq 100,m\leq10^9
题解
每一列的方案显然只与它前一列的方案有关。
设f[i][j]f[i][j]表示做完前ii列,最后一列恰好选了jj种颜色的方案数。
那么f[i][k]+=f[i−1][j]∗trans[j][k]f[i][k] += f[i-1][j] * trans[j][k]。
现在要处理的就是trans[j][k]trans[j][k]了,这个可以预处理。
先枚举j,kj,k再考虑j,kj,k颜色集合的交集xx,trans[j][k]=Cxj×Ck−xp−j×Tjtrans[j][k] = C_{j}^{x}\times C_{p-j}^{k-x}\times T_j,其中TjT_j表示一列恰好放jj种颜色的方案。这个可以容斥一下:Tj=jn−∑j−1iTi×CijT_j=j^n-\sum_i^{j-1}T_i\times C_j^i
预处理出transtrans之后,再矩阵乘法一下即可。
SRC
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std ;#define N 100 + 10
typedef long long ll ;
const int MO = 998244353 ;
struct Matrix {ll Mat[N][N] ;
} trans , f , s , ret ;ll fac[N] , _fac[N] , T[N] ;
int n , m , p , q ;
ll ans ;Matrix operator * ( Matrix a , Matrix b ) {memset( ret.Mat , 0 , sizeof(ret.Mat) ) ;for (int i = 1 ; i <= p ; i ++ ) {for (int j = 1 ; j <= p ; j ++ ) {for (int k = 1 ; k <= p ; k ++ ) {ret.Mat[i][j] = (ret.Mat[i][j] + a.Mat[i][k] * b.Mat[k][j] % MO) % MO ;}}}return ret ;
}ll Power( ll x , int k ) {ll s = 1 ;while ( k ) {if ( k & 1 ) s = s * x % MO ;x = x * x % MO ;k /= 2 ;}return s ;
}ll C( int n , int m ) { return fac[n] * _fac[m] % MO * _fac[n-m] % MO ; }Matrix PowerM( int k ) {for (int i = 1 ; i <= p ; i ++ ) s.Mat[i][i] = 1 ;while ( k ) {if ( k & 1 ) s = s * trans ;trans = trans * trans ;k /= 2 ;}return s ;
}int main() {freopen( "color.in" , "r" , stdin ) ;freopen( "color.out" , "w" , stdout ) ;scanf( "%d%d%d%d" , &n , &m , &p , &q ) ;fac[0] = _fac[0] = 1 ;for (int i = 1 ; i <= max(n,p) ; i ++ ) {fac[i] = fac[i-1] * i % MO ;_fac[i] = Power( fac[i] , MO - 2 ) ;}for (int i = 1 ; i <= p ; i ++ ) {T[i] = Power( i , n ) ;ll sum = 0 ;for (int j = 1 ; j < i ; j ++ ) {sum = (sum + T[j] * C(i,j) % MO) % MO ;}T[i] = (T[i] - sum + MO) % MO ;}for (int i = 1 ; i <= min(n,p) ; i ++ ) {for (int j = 1 ; j <= min(n,p) ; j ++ ) {for (int x = max(i+j-p, 0) ; x <= min(i,j) ; x ++ ) {if ( i + j - x < q ) continue ;trans.Mat[i][j] = (trans.Mat[i][j] + C(i,x) * C(p-i,j-x) % MO * T[j] % MO) % MO ;}}}for (int i = 1 ; i <= p ; i ++ ) f.Mat[1][i] = C(p,i) * T[i] % MO ;f = f * PowerM( m - 1 ) ;for (int i = 1 ; i <= p ; i ++ ) ans = (ans + f.Mat[1][i]) % MO ;printf( "%lld\n" , ans ) ;return 0 ;
}
以上.
JZOJ4870. 涂色游戏相关推荐
- 【NOIP 模拟赛】平均数 涂色游戏 序列题解
吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...
- qduoj LC的涂色游戏(快速幂)
题目链接:https://qduoj.com/problem/12/点击打开链接 LC的涂色游戏 发布时间: 2015年9月19日 21:42 时间限制: 1000ms 内存限制: 256M ...
- c语言写一个格子涂色的游戏,不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思...
原标题:不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思 30000+游戏爱好者已加入我们! 沐沐带你发现好游戏! <魔力贴贴>游戏小程序好玩吗? <魔力贴贴>小游戏怎么玩 ...
- NOI Online #2 提高组 第一题:涂色游戏
NOI Online #2 提高组 第一题:涂色游戏 前言 题目 解析 代码 前言 呦呵,这道题我竟然爆零了 而且我的暴力dfs死循环了!\bold{\Large\xcancel\text{而且我的暴 ...
- 【noip2016十连测round3】T3 涂色游戏 【矩阵快速幂优化dp】
涂色游戏 题解: 推一推公式. 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方 ...
- qduoj LC的涂色游戏
LC的涂色游戏 发布时间: 2015年9月19日 21:42 时间限制: 1000ms 内存限制: 256M 描述 LC是实验室传说级的大神,最近喜欢上了涂色游戏,现在纸上有n块空白区域,lc ...
- 橡皮擦的英语_从填字涂鸦到英语启蒙,家长口中的儿童版“秘密花园”涂色游戏测评【玩具测评】...
#前情提要#丰富的拓展玩法让简单的穿珠游戏大不同,点击<手眼协调与数学启蒙,用线绳穿珠游戏促进能力发展>了解详情. 今天我们为大家带来了一篇绘画+英语启蒙学习玩具的测评报告.这款玩具是植绒 ...
- 涂色游戏color(【CCF】NOI Online 能力测试2 提高组第一题 )
子序列问题sequence([CCF]NOI Online能力测试2 提高组第二题 ) 游戏match([CCF]NOI Online能力测试2 提高组第三题 ) 题目背景 1s 256M 题目描述 ...
- Java方格染色_C++实现涂色游戏(博弈)
在一个2*N的格子上,Alice和Bob又开始了新游戏之旅. 这些格子中的一些已经被涂过色,Alice和Bob轮流在这些格子里进行涂色操作,使用两种涂色工具,第一种可以涂色任意一个格子,第二种可以涂色 ...
最新文章
- 图像分析:投影曲线的波峰查找
- 使用navicat 11 出现不能返回存储过程结果的问题
- hapi mysql项目实战路由初始化_用hapi.js mysql和nuxt.js(vue ssr)开发仿简书的博客项目...
- 案例代码:springboot+shiro配置同一用户多设备登录最大会话数
- Spark Streaming 遇到 kafka
- BI/数据仓库/数据分析 基础入门:一些常见概念解释
- 【Docker】docker bash: sudo: command not found
- android 系统应用在运行时被卸载
- MyBatis拦截器执行顺序
- ZYNQ图像处理(7)——sobel边缘检测
- Mysql-五种join类型
- 【NVMe2.0b 7】NVMe 基本队列数据结构
- ubuntu下的3D桌面.compiz
- 关于开机USB电涌15秒关机的另类解决方法
- 颜色恒常性CVPR2020 Multi-Domain Learning for Accurate and Few-Shot Color Constancy阅读笔记
- requests爬取豆瓣前250部高分电影
- 深度卷积对抗神经网络 基础 第六部分 缺点和偏见 GANs Disadvantages and Bias
- 鼠标经过图片 图片放大缩小
- 商城类小程序开发全过程(附源码)
- 修改云服务器端口,如何修改云服务器默认3389端口