最后的晚餐(dinner)

最后的晚餐(dinner)

https://ac.nowcoder.com/acm/problem/19857

分析

看到这道题断定就是一个简单的圆排列问题
但由于我们不知道有几对情侣会在一起
那么我们求一个补问题
枚举坐在一起的情侣的对数
再进行简单容斥即可
容易推出公式:

由于本题需要的是的时间复杂度
所以我们需要对于每个组合数求得
Fac[]表示前缀积
Inv[]表示前缀积的逆元
那么

即可解决这个问题

代码

//Newcoder 19857
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>

#define LL long long
#define FOR(i,A,B) for(LL i=A;i<=B;i++)
#define BOR(i,A,B) for(LL i=A;i>=B;i--)
using namespace std;
const int MaxN=6e7+10;
const LL Mod=1e9+7,Temp=500000004;

int Inv[MaxN]={1};
LL Fac=1,Ans,Two=1,Tot;
LL Total;

inline LL Fast(LL A,LL B) {
    LL Res=1;
    while(B) {
        if(B & 1) Res=(Res*A)%Mod;
        A=(A*A)%Mod; B>>=1;
    }
    return Res%Mod;
}

int main() {
    scanf("%lld",&Total);
    if(Total==1) { cout<<"0"<<endl; return 0; }
    FOR(i,1,Total) { Two=Two*2%Mod; Fac=Fac*i%Mod; }
    Tot=Fac*Fast(Total,Mod-2)%Mod;
    Inv[Total]=Fast(Fac,Mod-2);
    BOR(i,Total-1,0) { Inv[i]=1ll*Inv[i+1]*(i+1)%Mod; } 
    BOR(i,Total,0) {    
        Ans=(Ans+Tot*Two%Mod*1ll*Inv[i]%Mod*Inv[Total-i]%Mod*(i & 1 ? -1 : 1))%Mod;
        Two=Two*Temp%Mod;
        Tot=Tot*(2*Total-i)%Mod;
    }
    Ans=(Ans+Mod)%Mod;
    Ans=Ans*Fac%Mod;
    printf("%lld\n",Ans); 
    system("pause");
    return 0;
}
全部评论

相关推荐

评论
4
3
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9937次浏览 92人参与
# 你的实习产出是真实的还是包装的? #
1793次浏览 41人参与
# 米连集团26产品管培生项目 #
5799次浏览 214人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7494次浏览 43人参与
# 简历第一个项目做什么 #
31591次浏览 332人参与
# 重来一次,我还会选择这个专业吗 #
433398次浏览 3926人参与
# 巨人网络春招 #
11307次浏览 223人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187025次浏览 1122人参与
# 牛客AI文生图 #
21414次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152310次浏览 887人参与
# 研究所笔面经互助 #
118882次浏览 577人参与
# 简历中的项目经历要怎么写? #
310120次浏览 4197人参与
# AI时代,哪些岗位最容易被淘汰 #
63489次浏览 806人参与
# 面试紧张时你会有什么表现? #
30490次浏览 188人参与
# 你今年的平均薪资是多少? #
213034次浏览 1039人参与
# 你怎么看待AI面试 #
179917次浏览 1237人参与
# 高学历就一定能找到好工作吗? #
64317次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76452次浏览 374人参与
# 我的求职精神状态 #
448008次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363299次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160600次浏览 1111人参与
# 校招笔试 #
470578次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务