P8594 「KDOI-02」一个仇的复
我会组合数!
首先发现同一列只有被不同的横块填或被一个相同的竖块填,且用竖块填完1列之后,会分成两个封闭的长方形,而长方形内部则用横块来填充。
先考虑一个子问题,某个 \(2 \times n\) 长方形内只用 \(k\) 个 \(1 \times x\) 的横块填的方案数,显然有 \(\sum\limits^{k-1}_{i=1}{n-1\choose i-1 }{n-1\choose k-i-1}\) ,可以得到 \(2n-2\choose k-2\) ,能够扩展得到一个这样的东西: \(\sum\limits_{i=-a}^{k}{n\choose i+a}{m\choose k-i}={n+m\choose r+s}\) ,用范德蒙德卷积证明。
再考虑将竖块插进来,对于每一个横块组成的大长方形而言,除了第一个前面和最后一个后面可放可不放,其余之间都必须放至少一个竖块,相当于就是将 \(i\) 个横块插入到 \(j\) 个竖块去,即 \(j+1\choose i\) 。然后再是考虑一个个方块怎么分配给 \(i\) 个横块,直接算上 \(n-j-1\choose i-1\) 就行了,相当于是统计对于一个封闭的子长方形要给多大规模的方案数。
然后像之前所讨论过的子问题,对于 \(i\) 个子长方形,不难列出: \(\sum\limits_{\sum^{i}_{g=1}{B_g} = {k-j}}{\prod\limits^{i}_{g=1}{2A_g-2 \choose B_g-2}}\) ,其中 \(A_g\) 表示每个子长方形的列数, \(B_g\) 表示这个子长方形用多少个横块去填,组合意义优化成 \(2n-2j-2i \choose k-j-2i\) 。
把上面的综合一下, \(ans=\sum\limits^{k}_{i=0}\sum\limits_{j=0}^{k-i}{{j+1\choose i}{n-j-1\choose i-1}{2n-2j-2i \choose k-j-2i}}\) , \(i\) 枚举横块, \(j\) 枚举竖块,时间复杂度是 \(O(k^2)\) 。
注意下边界,实际上 \(n=k\) 的时候会寄,因为当 \(i=0\) , \(j=k\) 的时候,循环会返回0答案,所以特判一下+1就行了。
#include<bits/stdc++.h>
#define il inline
#define ll long long
#define maxn 40000001
using namespace std;
const ll mod=998244353;
il int read(){
char c;int f=0,x=0;
while(!isdigit(c=getchar()))f|=(c=='-');
while(isdigit(c))x=(x*10)+(c^48),c=getchar();
return f?-x:x;
}
int n,k;
int fac[maxn];
ll invfac[maxn];
il ll mypow(ll a,ll b){
ll ret=1ll;
while(b){
if(b&1)ret=(ret*a)%mod;
a=(a*a)%mod,b>>=1ll;
}
return ret;
}
il ll C(ll a,ll b){return a<b?0ll:fac[a]*invfac[b]%mod*invfac[a-b]%mod;}
int main(){
n=read(),k=read();
int nn=n*2;fac[0]=invfac[0]=1;
for(int i=1;i<=nn;i++)fac[i]=(fac[i-1]*1ll*i*1ll)%mod;
invfac[nn]=mypow(fac[nn]*1ll,mod-2);
for(int i=nn-1;i>=1;i--)invfac[i]=invfac[i+1]*1ll*(i+1)%mod;
ll ans=0;
for(int i=1;i<=k;i++)
for(int j=0;j<=k-i;j++){
if(k-j-2*i<0)continue;
ans=(ans+C(j+1,i)*C(n-j-1,i-1)%mod*C(2*n-2*j-2*i,k-j-2*i)%mod)%mod;
}
printf("%lld\n",ans+(n==k));
return 0;
}
P8594 「KDOI-02」一个仇的复的更多相关文章
- 【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能
9 月底,苹果正式在北京成立了苹果中国研发中心.近几年,我们也在每年更新的 iOS 系统中不断看到,苹果对中国市场的关照.从早前的九宫格输入法,到最近的骚扰电话拦截,都照顾了国内用户的需求. 在 iO ...
- loj #2254. 「SNOI2017」一个简单的询问
#2254. 「SNOI2017」一个简单的询问 题目描述 给你一个长度为 NNN 的序列 aia_iai,1≤i≤N1\leq i\leq N1≤i≤N,和 qqq 组询问,每组询问读入 l1 ...
- 「SNOI2017」一个简单的询问
「SNOI2017」一个简单的询问 简单的解法 显然可以差分一下. \[get(l,r,x)\times get(l1,r1,x)=get(1,r,x) \times get(1,r1,x)-get( ...
- 硬吃一个P0故障,「在线业务」应该如何调优HBase参数?
1.背景 由于种种原因,最近将核心业务生产使用的HBase迁移到了云上的弹性MapReduce(EMR)集群上,并使用了EMR的HBase组件默认参数配置. 结果在流量高峰期出现了宿主机故障,挂掉了两 ...
- FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...
- SpringBoot图文教程17—上手就会 RestTemplate 使用指南「Get Post」「设置请求头」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1-Spr ...
- B 站崩了,总结下「高可用」和「异地多活」
你好,我是悟空. 一.背景 不用想象一种异常场景了,这就真实发生了:B 站晚上 11 点突然挂了,网站主页直接报 404. 手机 APP 端数据加载不出来. 23:30 分,B 站做了降级页面,将 4 ...
- 前端构建工具之gulp(一)「图片压缩」
前端构建工具之gulp(一)「图片压缩」 已经很久没有写过博客了,现下终于事情少了,开始写博吧 今天网站要做一些优化:图片压缩,资源合并等 以前一直使用百度的FIS工具,但是FIS还没有提供图片压缩的 ...
- fir.im Weekly - 如何打造 Github 「爆款」开源项目
最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>「Port to Android」,让我们对 Swift 的想象又多 ...
- 更新日志 - fir.im「高级统计」功能上线
距离 2016 年到来只剩 10 个日夜,fir.im 也准备了一些新鲜的东西,比如「高级统计」功能和「跳转应用商店」功能,帮助你更好地管理.优化应用,欢迎大家试用反馈:) 新增高级统计功能 这次更新 ...
随机推荐
- 4.prometheus监控--监控linux服务器
一.监控linux服务器 1.1 二进制安装 # 客户端操作wget https://github.com/prometheus/node_exporter/releases/download/v1. ...
- HarmonyOS 应用生命周期有哪些? 按返回键会调用哪些生命周期?
UIAbility 生命周期: onCreate :页面初始化,变量定义,资源加载. onWindowStageCreate:设置 UI 界面加载.设置 WindowStage 的事件订阅. onFo ...
- 自动生成robot自动化测试用例
背景:java项目使用swagger管理接口,随着需求的开发接口也有增加,要从swagger界面中去查找出新增的接口是件很费时,效率很低的事情. 适用情况: java项目且适用swagger管理接口 ...
- 5GC 系统架构
目录 文章目录 目录 前文列表 4G/5G 核心网对比 4G/5G 核心网融合架构 5GC 架构 AMF 功能 SMF 功能 NSSF 功能 UPF 功能 AF.PCF & NEF 功能 BS ...
- 初识上位机(上):搭建PLC模拟仿真环境
大家好,我是Edison. 作为一个工业自动化领域的程序员,不懂点PLC和上位机,貌似有点说不过去.这里我用两篇小文带你快速进入上位机开发领域.后续,我会考虑再出一个系列文章一起玩工控上位机. 什么是 ...
- AIRIOT物联网低代码平台如何配置OPC UA驱动?
AIRIOT物联网低代码平台支持驱动类型丰富,驱动包括但不限于通用驱动信息,无线驱动信息,行业驱动信息及各个厂商驱动.驱动稳定性强,经受住各个大型项目考验,持续稳定运行. AIRIOT物联网低代码平台 ...
- 记一次Nacos漏洞的复现 --> 身份认证绕过漏洞(QVD-2023-6271)
前记 端午前两天,遇到公司某客户的站点是Nacos,随后就是网上搜一波漏洞,搜到 QVD-2023-6271,故做以下记录 漏洞复现 漏洞描述 漏洞原理为开源服务管理平台 Nacos在默认配置下未对 ...
- 一个IDEA界面如何同时打开多个项目
第一步:先导入其中一个工程 第二步:点击File->Project Structure 第三步:导入模块 最后点击Apply即可完成一个IDEA界面同时打开多个项目的需求.
- vsftp配置使用
vsftp简介: VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全. 安全性是编写VSFT ...
- 分享5款.NET开源免费的Redis客户端组件库
前言 今天大姚给大家分享5款.NET开源.免费的Redis客户端组件库,希望可以帮助到有需要的同学. StackExchange.Redis StackExchange.Redis是一个基于.NET的 ...