最后的晚餐(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) 解题报告相关推荐

  1. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  2. 【牛客OI周赛7-普及组ABCD 非官方题解】暴力,二分,KMP,尺取(STL或Hash)

    A: 链接:https://ac.nowcoder.com/acm/contest/372/A 来源:牛客网 某天,一只可爱的肥橘喵在路上走,突然遇到了一个怪人,那怪人自称PM6,"小肥喵, ...

  3. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  4. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  6. 解题报告(一)快速沃尔什变换FWT(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  7. 【牛客 - 371牛客OI周赛7-提高组B】小睿睿的询问(RMQ,ST表维护下标)

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/B 来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小 ...

  8. 【牛客 - 371牛客OI周赛7-提高组A】小睿睿的等式(dp,暴力 )

    题干: 链接:https://ac.nowcoder.com/acm/contest/371/A 来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如"A+B=n"的等 ...

  9. LeetCode228场周赛解题报告

    LeetCode228场周赛解题报告 生成交替二进制字符串的最少操作数 原题链接 https://leetcode-cn.com/contest/weekly-contest-228/problems ...

最新文章

  1. c++ url下载图片
  2. 【算法题1】上台阶问题
  3. 高阶函数 map,reduce, filter的用法
  4. UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
  5. ftp服务器文件端口,ftp服务器端口用哪个文件
  6. 【Java集合的详细研究4】Java中如何遍历Map对象的4种方法
  7. java tracert_tracert详解
  8. Python爬取周杰伦的200首歌+BI可视化分析
  9. xp计算机无法关机,WindowsXP电脑无法关机?6招轻松解决故障
  10. h61 nvme硬盘_移动硬盘怎么选?看完这篇不踩坑
  11. 一个IT男的500强生涯
  12. 程序员视角m1 Macbook air使用指南和指令备忘录
  13. 罗德里格斯公式 理解、推导
  14. getline()的用法详解
  15. Java之Builder模式使用
  16. c35是什么意思_混凝土c25、c30、c35分别代表什么意思?
  17. 2021数模国赛A题
  18. 有向图的邻接矩阵表示求各节点的度、出度和入度-----数据结构与算法笔记
  19. 股票知识:成本价的计算
  20. .cc注册规则有哪些 CC域名前景怎么样

热门文章

  1. 安卓APP_ 控件(4)—— ImageView
  2. git版本回退命令_Git学习版本回退和管理文件的修改及删除操作
  3. 可做fft分析吗_小吃店生意好做吗,小吃业行情分析
  4. jvm配置参数,查看大对象直接分配到老年代
  5. linux db2 ssl,IBM DB2 Content Manager V83与手工配置SSL
  6. 前端工具:推荐几款UI设计师好用的设计软件
  7. hades武器第四形态解锁_凯多的第四个技能预告——冰冻!
  8. 挂起某线程命令 Linux,linux 线程挂起恢复的简单示例
  9. mysql将多个成绩放在一排_mysql巧用连表查询各科成绩前三名
  10. ediplus 复制编辑一列_vi编辑器的使用详解