[luogu4931]情侣?给我烧了!

题解
有\(i\)对情侣全都不和谐那里推不出来只好写了一个暴力容斥然后大力卡常卡过去了==
容斥太过暴力,还是说正解吧
可以考虑直接计算\(n\)对情侣有\(k\)对和谐的方案数
设\(g[i]\)表示\(i\)对情侣\(2*i\)个座位,这\(i\)对情侣全都不和谐的方案数
那么答案显然就是\(C(n,k)*C(n,k)*fac[k]*2^k*g[n-k]\)
那么主要问题就是这个\(g[]\)怎么求
我们可以考虑像错排那样来推一下这个东西:
考虑有\(n\)对情侣:首先随便选一个坐在第一排的第一个位置,然后再选不是ta的情侣的坐在第一排的第二个位置,方案数是\((n*2)*(n*2-2)\)
那么考虑坐第一排的那两对的情侣,如果那两个也坐在同一排,方案数就是\((n-1)*g[n-2]\)
如果那两人不坐在同一排,那么可以把他们当做一对情侣,那么方案数就是\(g[n-1]\)
所以\(g[n]=(n*2)*(n*2-2)(g[n-1] +(n-1)*g[n-2])\)
代码
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int M = 5000005 ;
const int mod = 998244353 ;
using namespace std ;
inline int read() {
char c = getchar() ; int x = 0 , w = 1 ;
while(c>'9'||c<'0') { if(c=='-') w = -1 ; c = getchar() ; }
while(c>='0'&&c<='9') { x = x*10+c-'0' ; c = getchar() ; }
return x*w ;
}
int n , k , f[M] , fac[M] , inv[M] , finv[M] , pw2[M] ;
inline int C(int n , int m) {
return 1LL * fac[n] * finv[m] % mod * finv[n - m] % mod ;
}
inline int Calc(int n) {
return (1LL * n * 2 * (n * 2 - 2) % mod * (n - 1) * 2 % mod * f[n - 2] + 1LL * n * 2 * (n * 2 - 2) % mod * f[n - 1] % mod ) % mod ;
}
int main() {
fac[0] = 1 ;
for(int i = 1 ; i <= 5000000 ; i ++) fac[i] = 1LL * fac[i - 1] * i % mod ;
inv[1] = 1 ;
for(int i = 2 ; i <= 5000000 ; i ++) inv[i] = 1LL * (mod - mod / i) * inv[mod % i] % mod ;
finv[0] = 1 ;
for(int i = 1 ; i <= 5000000 ; i ++) finv[i] = 1LL * finv[i - 1] * inv[i] % mod ;
pw2[0] = 1 ;
for(int i = 1 ; i <= 5000000 ; i ++) pw2[i] = pw2[i - 1] * 2 % mod ;
f[0] = 1 ; f[1] = 0 ;
for(int i = 2 ; i <= 5000000 ; i ++) f[i] = Calc(i) ;
int Case = read() ;
while(Case --) {
n = read() ; k = read() ;
printf("%d\n", (1LL * C(n , k) * C(n , k) % mod * fac[k] % mod * pw2[k] % mod * f[n - k] % mod + mod) % mod) ;
}
return 0 ;
}
[luogu4931]情侣?给我烧了!的更多相关文章
- luogu4931. 情侣?给我烧了!(加强版)(错位排列)
题目链接 https://www.luogu.org/problemnew/show/P4931 题解 以下部分是我最开始的想法. 对于每一个 \(k\),满足恰好有 \(k\) 对情侣和睦的方案数为 ...
- Luogu4931 情侣?给我烧了!(加强版)【生成函数】
题目链接:洛谷 大家一起 日 ♂ % EI 设\(D_i\)表示\(k=0\)时的答案.那么 \[ f(n,k)=\binom{n}{k}^2D_{n-k}k!2^k \] 意义是选择\(k\)对情侣 ...
- 洛谷P4931 情侣!给我!烧了! 数论
正解:数论 解题报告: 传送门 这题,想不到就很痛苦,但是理解了之后还是觉得也没有很难,,,毕竟实现不难QAQ 首先关于前面k对情侣的很简单,就是C(n,k)*C(n,k)*A(k,k)*2k 随便解 ...
- 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码
洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...
- 洛谷P2194 HXY烧情侣
题目描述 众所周知,\(HXY\)已经加入了\(FFF\)团.现在她要开始喜\((sang)\)闻\((xin)\)乐\((bing)\)见\((kuang)\)地烧情侣了.这里有\(n\)座电影院, ...
- HXY烧情侣(洛谷 2194)
题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...
- HXY烧情侣
题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...
- P2194 HXY烧情侣【Tarjan】
前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...
- 【Luogu4931】情侣?给我烧了! 加强版(组合计数)
[Luogu4931]情侣?给我烧了! 加强版(组合计数) 题面 洛谷 题解 戳这里 忽然发现我自己推的方法是做这题的,也许后面写的那个才是做原题的QwQ. #include<iostream& ...
随机推荐
- ultraiso:usb-hdd+ v2
http://cn.ezbsystems.com/ultraiso/download.htm 普通隐藏:建立一个LBA前置的PBR包含表头的活动分区.高端隐藏:建立一个LBA后置的PBR包含表头的活动 ...
- react-container-query
1.媒体查询 响应式组件 2.使用方法 (1)引入 import { ContainerQuery } from 'react-container-query'; (2)规定屏幕尺寸 /** * 媒体 ...
- 【转载】HTTP协议与WEB本质
当你在浏览器地址栏敲入"http://www.csdn.net/",然后猛按回车,呈现在你面前的,将是csdn的首页了(这真是废话,你会认为这是理所当然的).作为一个开发者,尤其是 ...
- Oracle学习(18)【DBA向】:分布式数据库
分布式数据库 什么是分布数据库? l数据物理上被存放在网络的多个节点上,逻辑上是一个总体. 分布式数据库的独立性 l分布数据的独立性指用户不必关心数据怎样切割和存储,仅仅需关心他须要什么数据. Ora ...
- win64 qt与fortran (codeblocks) 混合编程
本教程主要解说用fortran生成dll供qt调用(win64) 本教程须要的软件及文件可从以下的连接下载: http://pan.baidu.com/s/1c04jziC fortran我用的软件是 ...
- Redis入门教程(二)— 基本数据类型
阅读以下内容时,手边打开一个redis-cli一起输入,输入命令敲击回车键前在心中想好你的答案,如果结果不合你的预期,请分析原因,使极大地提高学习效率.如果没有条件,每个数据类型后有代码运行结果,供你 ...
- Linux文档,目录命令
1,Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同,首先Linux没有"盘(C盘,D盘,E盘的概念)"的概念,已经建立文件系统的硬盘分区被挂载到某 ...
- 卸载ubuntu自带openJDK,更改成自己的JDK版本
你已经成功把jdk1.6.0_03 安装到 /usr/java,并且配置好了系统环境变量 执行 # java -version 时就是 显示jdk1.4.3,是因为你的linux系统有默认的jdk;执 ...
- (2)mac下安装MySql数据库软件
一,软件下载: https://dev.mysql.com/downloads/mysql/ 也可以从其他资源下载.不一定非要官方下载 二,安装 这个比较简单,之间双击开启安装程序,一直下一步就可以. ...
- A - BBQ Easy
Score : 200 points Problem Statement Snuke is having a barbeque party. At the party, he will make N ...