nowcoder OI 周赛 最后的晚餐(dinner) 解题报告
最后的晚餐(dinner)
链接:
https://www.nowcoder.com/acm/contest/219/B
来源:牛客网
题目描述
\(\tt{**YZ}\)(已被和谐)的食堂实在是太挤辣!所以\(\tt{Apojacsleam}\)现在想邀请他的一些好友去校外吃一顿饭,并在某酒店包下了一桌饭。
当\(\tt{Apojacsleam}\)和他的同学们来到酒店之后,他才发现了这些同学们其实是\(N\)对\(cp\),由于要保护广大单身狗的弱小心灵(\(FF\)!),所以他不想让任意一对情侣相邻。
说明:
- 酒店的桌子是恰好有\(2N\)个位置的圆桌。
- 客人恰好是\(N\)对\(cp\),也就是说,圆桌上没有空位。
- 桌子的每一个位置是一样的,也就是说,如果两种方案可以通过旋转得到,那么这就可以视为相等的。
- 现在,你需要求出,将任意一对情侣不相邻的方案数。
说明
对于\(20\%\)的数据,\(1\le N\le 5\)
对于\(30\%\)的数据,\(1\le N\le20\)
对于\(50\%\)的数据,\(1\le N\le100\)
对于\(70\%\)的数据,\(1\le N\le 200000\)
对于\(100\%\)的数据,\(1\le N\le 30000000\)
思路:容斥原理
\(f_i\)代表至少\(i\)对情侣坐相邻的方案数。
首先考虑一个小问题,\(n\)个人围成一个可以旋转的环的方案数。
可以固定第一个人,方案数就是\((n-1)!\)
那么\(f_i=fac_{2n-i-1}\times 2^i \times \binom{n}{i}\)
分别代表,捆绑法以后的方案数,情侣内部的方案数和选择情侣的可能性。
答案就是\(\sum_{i=0}^nf_i(-1)^i\)
常数写的不好。。说起来标程写的好厉害,我都没看懂。。
Code:
#include <cstdio>
#define ll long long
const ll mod=1e9+7;
const ll Inv=500000004;
const int N=3e7+10;
ll quickpow(ll d,ll k)
{ll f=1;while(k){if(k&1) f=f*d%mod;d=d*d%mod;k>>=1;}return f;
}
ll fac,tfac=1,ans=0,inv[N],po=1;
int n;
int main()
{scanf("%d",&n);if(n==1) return puts("0"),0;for(ll i=1;i<=n;i++) tfac=tfac*i%mod,po=po*2%mod;fac=tfac*quickpow(n,mod-2)%mod;inv[n]=quickpow(tfac,mod-2);for(ll i=n-1;~i;i--) inv[i]=inv[i+1]*(i+1)%mod;for(ll i=n;~i;i--){(ans+=fac*inv[i]%mod*inv[n-i]%mod*po%mod*(i&1?-1:1))%=mod;fac=fac*(2*n-i)%mod;po=po*Inv%mod;}ans=(ans+mod)%mod;ans=ans*tfac%mod;printf("%lld\n",ans);return 0;
}
2018.10.28
转载于:https://www.cnblogs.com/butterflydew/p/9867900.html
nowcoder OI 周赛 最后的晚餐(dinner) 解题报告相关推荐
- 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...
- 【牛客OI周赛7-普及组ABCD 非官方题解】暴力,二分,KMP,尺取(STL或Hash)
A: 链接:https://ac.nowcoder.com/acm/contest/372/A 来源:牛客网 某天,一只可爱的肥橘喵在路上走,突然遇到了一个怪人,那怪人自称PM6,"小肥喵, ...
- 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(十三)中国剩余定理(ACM / OI)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 解题报告(五)组合计数(ACM / OI)超高质量题解
繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...
- 解题报告(一)快速沃尔什变换FWT(ACM / OI)超高质量题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...
- 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)
题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...
- 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )
题干: 链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等 ...
- LeetCode228场周赛解题报告
LeetCode228场周赛解题报告 生成交替二进制字符串的最少操作数 原题链接 https://leetcode-cn.com/contest/weekly-contest-228/problems ...
最新文章
- c++ url下载图片
- 【算法题1】上台阶问题
- 高阶函数 map,reduce, filter的用法
- UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
- ftp服务器文件端口,ftp服务器端口用哪个文件
- 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
- java tracert_tracert详解
- Python爬取周杰伦的200首歌+BI可视化分析
- xp计算机无法关机,WindowsXP电脑无法关机?6招轻松解决故障
- h61 nvme硬盘_移动硬盘怎么选?看完这篇不踩坑
- 一个IT男的500强生涯
- 程序员视角m1 Macbook air使用指南和指令备忘录
- 罗德里格斯公式 理解、推导
- getline()的用法详解
- Java之Builder模式使用
- c35是什么意思_混凝土c25、c30、c35分别代表什么意思?
- 2021数模国赛A题
- 有向图的邻接矩阵表示求各节点的度、出度和入度-----数据结构与算法笔记
- 股票知识:成本价的计算
- .cc注册规则有哪些 CC域名前景怎么样
热门文章
- 安卓APP_ 控件(4)—— ImageView
- git版本回退命令_Git学习版本回退和管理文件的修改及删除操作
- 可做fft分析吗_小吃店生意好做吗,小吃业行情分析
- jvm配置参数,查看大对象直接分配到老年代
- linux db2 ssl,IBM DB2 Content Manager V83与手工配置SSL
- 前端工具:推荐几款UI设计师好用的设计软件
- hades武器第四形态解锁_凯多的第四个技能预告——冰冻!
- 挂起某线程命令 Linux,linux 线程挂起恢复的简单示例
- mysql将多个成绩放在一排_mysql巧用连表查询各科成绩前三名
- ediplus 复制编辑一列_vi编辑器的使用详解