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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴Java开发手册终极版

2019独角兽企业重金招聘Python工程师标准>>> 一、编程规约&#xff1a; (一)命名风格 1. 【强制】 代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a; _name / __name / $Object / name_ / name$ / Object$ 2.…

ios6.1.6可用微信_这是iOS 12.1的新增功能,今天可用

ios6.1.6可用微信While iOS 12 is still fairly fresh, the first point release will be rolling out starting today. This brings a handful of new features, like Group Facetime, dual SIM support, camera improvements, new emoji, and more. 尽管iOS 12仍然相当新鲜&a…

Hadoop实战项目之网站数据点击流分析(转载分析)

本文转载于csdn博主‘一直不懂’ 一&#xff0c;项目业务背景 https://blog.csdn.net/shenchaohao12321/article/details/82958936 二&#xff0c;整体技术流程及架构 https://blog.csdn.net/shenchaohao12321/article/details/82959255 三&#xff0c;数据采集 https://blog.c…

php rewrite url_PHP实现url重写和.htaccess

.htaccess是一个完整的文件名(只有后缀)&#xff0c;它是用于Apache服务器下的配置文件&#xff0c;当.htaccess文件放在某一文件夹下&#xff0c;它仅对该文件夹下的文件和文件夹有效。通过.htaccess文件&#xff0c;可以配置服务器实现很多功能&#xff0c;比如错误定位&…

esp32 cam工作电流_我如何在家工作:Cam的生产力之痛

esp32 cam工作电流Telecommuting is becoming more and more common these days, with many tech writers (myself included) working from home on a full-time basis. I get asked about how I work fairly often, so here’s the skinny. 如今&#xff0c;远程办公变得越来越…

PL/SQL Developer结合oracle精简客户端配置说明

oracle 11g精简版客户端配置 ORACLE 一般情况下都会部署在服务器上&#xff0c;而在客户端上需使用PL/SQL Developer 等连接工具连接服务器上的 ORACLE 。 而此时往往需要在客户端上也安装上百兆的 ORACLE 然后通过 ORACLE 的网络配置向导来配置完成 PL/SQL Developer 的支持。…

NUMPY数据集练习 ----------SKLEARN类

123456<br><br># 1. 安装scipy&#xff0c;numpy&#xff0c;sklearn包import numpyfrom sklearn.datasets import load_iris# 2. 从sklearn包自带的数据集中读出鸢尾花数据集dataprint(data.data)123# 3.查看data类型&#xff0c;包含哪些数据data load_iris()pr…

java 伪异步 netty,大话netty系列之--伪异步BIO

生意规模扩大话说&#xff0c;老王和大明的生意越来越好&#xff0c;这就需要两个人增强业务往来&#xff0c;由于天南地北&#xff0c;两个人只能每次运输都需要雇一个人去运货(new 一个线程)&#xff0c;一个月下来&#xff0c;两人一算&#xff0c;人力成本太大了&#xff0…

如何使用Windows搜索在任何文件中搜索文本

Many of us rely on Windows Search to find files and launch programs, but searching for text within files is limited to specific file types by default. Here’s how you can expand your search to include other text-based files. 我们中的许多人都依赖Windows搜索…

php算法求出兔子数列,PHP算法:斐波那契数列的N种算法

前言前段时间&#xff0c;遇到优化计算斐波那契数列的常规递归方法&#xff0c;但是一时间并没有及时想到很好的方法&#xff0c;所以后面查找了相关资料&#xff0c;总结了多种计算解法&#xff0c;所以分享出来&#xff0c;和大家一起交流学习。斐波那契数是什么斐波那契数列…

.net core MongoDB 初试

是这样的&#xff0c;我们有一个场景&#xff0c;另一个服务器是写到MongoDB里面&#xff0c;我们的MVC页面要展示&#xff0c;需要分页展示 自己写了一个DAL public class MongoConnect{public string ConnectString { get; set; }}public class MongoBaseDAL<TEntity>{…

Linux文件和目录权限:chmod、更改所有者和所属组:chown,umask命令,隐藏权限:lsattr/chattr...

文件和目录权限chmod&#xff1a; 我们使用ls -l可以看到文件的详细信息&#xff0c;也知道第一列的第一个符号(字母)表示文件的类型&#xff0c;在表示文件的类型符号的后面的九个符号则表示的是文件的权限&#xff0c;这些权限和文件的所有者和所属组都有关系&#xff1a; 文…

【技术累积】【点】【java】【27】@JSONField

JSONField 该注解隶属于阿里fastjson&#xff0c;方便fastjson处理对象时的一些操作 源码 Retention(RetentionPolicy.RUNTIME) Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) public interface JSONField {/*** config encode/decode ordinal* s…

百度php editor图片上传到其他盘,百度编辑器Editor图片独立上传

将百度编辑器中的图片独立出来上传&#xff1a;html:代码var myEditorImage,d,myEditorImage new UE.ui.Editor();myEditorImage.render(uploadid);myEditorImage.ready(function(){myEditorImage.setDisabled();myEditorImage.hide();//隐藏UE框体myEditorImage.addListener(…

感谢支持,超预期重印并加码

今天&#xff0c;要向广大读者朋友带来一个&#xff0c;连我自己和出版社都感到十分意外的好消息&#xff0c;几天前接到出版社的通知&#xff0c;说今年元月出版的《Cisco/H3C交换机配置与管理完全手册》&#xff08;第二版&#xff09;马上就要下单重印了&#xff0c;而且一下…

如何从手机远程控制uTorrent

You’re a geek on the go and it’s important to keep tabs on your torrents when you’re away from home. Today we take a peak at how you can monitor, manage, and even start your torrent downloads when you’re away from your computer. 您是旅途中的怪胎&#x…

洛谷P2463 Sandy的卡片【后缀数组】【二分】

题目描述 Sandy和Sue的热衷于收集干脆面中的卡片。 然而&#xff0c;Sue收集卡片是因为卡片上漂亮的人物形象&#xff0c;而Sandy则是为了积攒卡片兑换超炫的人物模型。 每一张卡片都由一些数字进行标记&#xff0c;第i张卡片的序列长度为Mi&#xff0c;要想兑换人物模型&#…

php获取一个文件名的函数,PHP 文件系统函数之获取文件名及文件名后缀-php文件...

获取文件名(包含扩展):1.用PHP 文件函数 basename获取例&#xff1a;$filename "/home/httpd/html/index.php";$file basename($filename);2.先获取位置再获取文件名例:$filename "/home/httpd/html/index.php";$pos strrpos($filename, /);if ($pos …

tasker使用手册_如何开始使用Tasker调整Android手机

tasker使用手册Tasker is a powerful app for Android that lets you customize how your phone works and automate tasks. Unfortunately, it’s got a bit of a learning curve. We’re here to show you how to get started and turn your phone into a flashlight in the …

iPhone 软件:xlate free 编码的好帮手!

功能菜单&#xff1a; 1 文本 2 二进制 3 Char 值 4 Base64 5 反向 如果需要把一段中文编码请选择UTF16&#xff0c;如果是英文就选择UTF8。对于需要经常使用编码切换的朋友是个好帮手。 也可以用来简单加密&#xff1a;我们先在文本状态下输入一段不想让别人知道或需要保密的文…