题解

有\(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]情侣?给我烧了!的更多相关文章

  1. luogu4931. 情侣?给我烧了!(加强版)(错位排列)

    题目链接 https://www.luogu.org/problemnew/show/P4931 题解 以下部分是我最开始的想法. 对于每一个 \(k\),满足恰好有 \(k\) 对情侣和睦的方案数为 ...

  2. Luogu4931 情侣?给我烧了!(加强版)【生成函数】

    题目链接:洛谷 大家一起 日 ♂ % EI 设\(D_i\)表示\(k=0\)时的答案.那么 \[ f(n,k)=\binom{n}{k}^2D_{n-k}k!2^k \] 意义是选择\(k\)对情侣 ...

  3. 洛谷P4931 情侣!给我!烧了! 数论

    正解:数论 解题报告: 传送门 这题,想不到就很痛苦,但是理解了之后还是觉得也没有很难,,,毕竟实现不难QAQ 首先关于前面k对情侣的很简单,就是C(n,k)*C(n,k)*A(k,k)*2k 随便解 ...

  4. 洛谷 P2194 HXY烧情侣【Tarjan缩点】 分析+题解代码

    洛谷 P2194 HXY烧情侣[Tarjan缩点] 分析+题解代码 题目描述: 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里 ...

  5. 洛谷P2194 HXY烧情侣

    题目描述 众所周知,\(HXY\)已经加入了\(FFF\)团.现在她要开始喜\((sang)\)闻\((xin)\)乐\((bing)\)见\((kuang)\)地烧情侣了.这里有\(n\)座电影院, ...

  6. HXY烧情侣(洛谷 2194)

    题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...

  7. HXY烧情侣

    题目描述 众所周知,HXY已经加入了FFF团.现在她要开始喜(sang)闻(xin)乐(bing)见(kuang)地烧情侣了.这里有n座电影院,n对情侣分别在每座电影院里,然后电影院里都有汽油,但是要 ...

  8. P2194 HXY烧情侣【Tarjan】

    前言 当时和\(GYZ\)大佬一起做这个题,他表示这个题对他很不友好(手动滑稽) 题目描述 众所周知,\(HXY\) 已经加入了 \(FFF\) 团.现在她要开始喜(sang)闻(xin)乐(bing ...

  9. 【Luogu4931】情侣?给我烧了! 加强版(组合计数)

    [Luogu4931]情侣?给我烧了! 加强版(组合计数) 题面 洛谷 题解 戳这里 忽然发现我自己推的方法是做这题的,也许后面写的那个才是做原题的QwQ. #include<iostream& ...

随机推荐

  1. Spring中实现自定义事件

    原理: 通过扩展ApplicationEvent,创建一个事件类CustomEvent.这个类必须定义一个默认的构造函数,它应该从ApplicationEvent类中继承的构造函数. 一旦定义事件类, ...

  2. Java实现敏感词过滤代码

    原文:http://www.open-open.com/code/view/1445762764148 import java.io.BufferedReader; import java.io.Fi ...

  3. 【Nginx】http模块的数据结构

    定义fttp模块方式很简单,比如:ngx_module_t ngx_http_mytest_module; 其中,ngx_module_t是一个Nginx模块的数据结构. typedef struct ...

  4. 【APUE】【转】守护进程编写

    http://blog.csdn.net/zg_hover/article/details/2553321 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务 ...

  5. Django学习系列之request对象

    先来一个简单的实例 urls.py from django.conf.urls import url from django.contrib import admin from cmdb import ...

  6. protobuf 之 MessageLite 接口摘录

    class LIBPROTOBUF_EXPORT MessageLite { public: inline MessageLite() {} virtual ~MessageLite(); // Ba ...

  7. 【Mongodb教程 第九课 】MongoDB 删除文档

    remove() 方法 MongoDB的 remove() 方法用于从集合中删除文档.remove() 方法接受两个参数.第一个是删除criteria ,第二是justOne标志: deletion ...

  8. 谁是性能杀手?Kafka多Topic下启用SSL时延增大问题分析

    问题背景 项目中将Kafka接口进行RESTful封装,在使用RESTful接口进行性能测试时,发现Topic数增多后,开启SSL与非SSL进行测试,发现开启SSL后性能下降得厉害.例如600个Top ...

  9. 51NOD 1821 最优集合 栈

    1821 最优集合   一个集合S的优美值定义为:最大的x,满足对于任意i∈[1,x],都存在一个S的子集S',使得S'中元素之和为i. 给定n个集合,对于每一次询问,指定一个集合S1和一个集合S2, ...

  10. http://www.freetds.org/userguide/what.htm

    FreeTDS is re-implementation of C libraries originally marketed by Sybase and Microsoft SQL Server. ...