牛客练习赛71C-数学考试【容斥,dp】

正题

题目链接:https://ac.nowcoder.com/acm/contest/7745/C


题目大意

求一nnn的排列,给mmm个限制pip_ipi表示1∼pi1\sim p_i1pi不能是pip_ipi的排列。求方案数。


解题思路

定义fif_ifi表示1∼pi1\sim p_i1pipip_ipi的排列的情况下1∼pi1\sim p_i1pi的方案数,显然有fi=pi!f_i=p_i!fi=pi!。但是如果我们用这个计算就会重复,所以我们需要容斥。定义fif_ifi表示1∼pi1\sim p_i1pipip_ipi的排列,且1∼pk1\sim p_k1pk不是pkp_kpk的排列(k<i)(k<i)(k<i)的情况下1∼pi1\sim p_i1pi的方案数,那么有转移方程fi=pi!−∑j=1i−1fj∗(pi−pj)!f_i=p_i!-\sum_{j=1}^{i-1}f_{j}*(p_i-p_j)!fi=pi!j=1i1fj(pipj)!

然后答案ans=n!−∑i=1mfi∗(n−pi)!ans=n!-\sum_{i=1}^mf_i*(n-p_i)!ans=n!i=1mfi(npi)!

时间复杂度O(m2)O(m^2)O(m2)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2100,XJQ=20000311;
ll n,m,fac[N],p[N],f[N];
int main()
{scanf("%lld%lld",&n,&m);fac[0]=1;for(ll i=1;i<=n;i++)fac[i]=fac[i-1]*i%XJQ;for(ll i=1;i<=m;i++)scanf("%lld",&p[i]);sort(p+1,p+1+m);for(ll i=1;i<=m;i++){f[i]=fac[p[i]]%XJQ;for(ll j=1;j<i;j++)f[i]=(f[i]-f[j]*fac[p[i]-p[j]]%XJQ+XJQ)%XJQ;}ll ans=fac[n];for(ll i=1;i<=m;i++)ans=(ans-f[i]*fac[n-p[i]]%XJQ+XJQ)%XJQ;printf("%lld",ans);
}

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

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

相关文章

【DP】景观美化

景观美化 题目大意&#xff1a; 有n个花圃&#xff0c;里面有一定的泥土&#xff0c;可以将泥土运到别的花圃&#xff0c;也可以填入&#xff0c;也可以挖出&#xff0c;现在要改变花圃中的泥土数量&#xff0c;问最少花多少钱 原题&#xff1a; 题目描述&#xff1a; 农夫…

CentOS安装使用.netcore极简教程(免费提供学习服务器)

本文目标是指引从未使用过Linux的.Neter&#xff0c;如何在CentOS7上安装.Net Core环境&#xff0c;以及部署.Net Core应用。 仅针对CentOS&#xff0c;其它Linux系统类似&#xff0c;命令环节稍加调整&#xff1b;需要提前准备好服务器地址、用户名、密码&#xff1b;如果手上…

ASP.NET Core MVC+EF Core从开发到部署

笔记本电脑装了双系统&#xff08;Windows 10和Ubuntu16.04&#xff09;快半年了&#xff0c;平时有时间就喜欢切换到Ubuntu系统下耍耍Linux&#xff0c;熟悉熟悉Linux命令、Shell脚本以及Linux下的各种应用的安装、配置、运行。使用下来的感受是Linux确实相当好使&#xff0c;…

初一模拟赛(4.27)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf320320320100100100100100100100100100202020222hkyhkyhky296296296100100100100100100868686101010333wjjwjjwjj276276276100100100909090868686000444fyfyfy24824824810010010…

P4145-上帝造题的七分钟2/花神游历各国【并查集,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P4145 题目大意 一个序列要求支持 区间开根向下取整区间求和 解题思路 一个数开根约logloglog次就会到111&#xff0c;所以我们对于每个数记录一下开根多少次会到111&#xff0c;每次修改用并查集找还没到111的暴力修改树状…

网络流及建模专题(上)

前言 不断更新中…… 这几天新坑填不下去了&#xff0c;回来回顾一些经典的模型套路&#xff0c;先拿网络流开刀&#xff0c;窃以为洛谷这几道网络流的题目还是非常具有代表性的&#xff0c;涵盖了网络流调整、多解计数、最小割、最大权闭合子图问题。 还涵盖了图论&#xff0…

基于 websocket 实现的 im 实时通讯案例

分享利用 redis 订阅与发布特性&#xff0c;巧妙的现实高性能im系统。为表诚意&#xff0c;先贴源码地址&#xff1a;https://github.com/2881099/im下载源码后的运行方法&#xff1a;运行环境&#xff1a;.NETCore 2.1 redis-server 2.8下载Redis-x64-2.8.2402.zip&#xff0…

【并查集】【图论】旅行(ssl 1312)

旅行 ssl 1312 题目大意&#xff1a; 有一个图&#xff0c;要从一个点到另一个点&#xff0c;问路上的最大值和最小值的比最小是多少 原题&#xff1a; 题目描述 Z小镇是一个景色宜人的地方&#xff0c;吸引来自各地的观光客来此旅游观光。Z小镇附近共有N个景点&#xff…

P4302-[SCOI2003]字符串折叠【区间dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4302 题目大意 一个字符串&#xff0c;对于一个字符串AAA。可以将连续的nnn个AAA缩成n(A)n(A)n(A)。求最短的长度能够表述出给定字符串 解题思路 定义fi,jf_{i,j}fi,j​表示表示出i∼ji\sim ji∼j的字符串的最短方法。那么…

ACM/ICPC 比赛生涯总结+经验分享

ACM/ICPC 比赛生涯总结经验分享 1.获奖经历 时间比赛奖励大一下ACM陕西省赛打铁大一下CCCC团队二等奖大二下ACM/ICPC全国邀请赛银奖大二下CCCC团队特等奖大三上ACM/ICPC区域赛沈阳站铜奖大三上ACM/ICPC区域赛南宁站银奖大三上ACM/ICPC EC-Final上海铜奖大三下CCCC团队特等奖大…

YbtOJ#20064-[NOIP2020模拟赛B组Day4]预算缩减【树形dp】

正题 题目链接:http://noip.ybtoj.com.cn/contest/90/problem/2 题目大意 nnn个点的一棵树&#xff0c;求删掉一些边让剩下的连通块大小不小于kkk&#xff0c;求方案数。 解题思路 定义fi,jf_{i,j}fi,j​表示iii的子树现在联通块大小为jjj时的方案数&#xff0c;我们不难发现…

【并查集】团伙(luogu 1892)

团伙 luogu 1892 代码&#xff1a; 定义对手的对手是朋友&#xff0c;朋友的朋友是朋友&#xff0c;现在有n个人和m组关系&#xff0c;如果两个人是朋友那么他们属于同一个团伙&#xff0c;问有多少个团伙 原题&#xff1a; 题目描述 1920年的芝加哥&#xff0c;出现了一…

NCC Meetup 2018 Shanghai 活动小结

NCC Meetup 2018 上海的活动于2018年6月30日在微软上海港汇办公室进行。原本计划30人规模的小型活动&#xff0c;结果收到了逾60人的报名&#xff0c;其中大部均来到现场参加了活动。本次活动得到了微软公司的场地支持&#xff0c;同时非常感谢 范亮先生、 刘浩杨先生和 邹嵩…

【结论】Array

Array 题目大意&#xff1a; 有一个数列&#xff0c;随机交换两个数&#xff0c;原数列和当前数列相同部分有可能有多少个 原题&#xff1a; 题目描述 Alice 有一个数列 ai。 但是她不喜欢这个数列&#xff0c;于是她决定随机交换其中两个数。 Alice 想知道&#xff0c;交…

YbtOJ#20065-[NOIP2020模拟赛B组Day4]模拟比赛【dp】

正题 题目链接:http://noip.ybtoj.com.cn/contest/90/problem/3 解题思路 有nnn道题&#xff0c;mmm个人。一些题目是让某些人一定得分&#xff0c;一些题目是让某些人可以能得分。 求排名前sss的人选出ttt个人&#xff0c;可能的集合个数。 解题思路 显然我们如果要判断一…

Asp.Net Core 使用Quartz基于界面画接口管理做定时任务

今天抽出一点点时间来造一个小轮子&#xff0c;是关于定时任务这块的。这篇文章主要从一下几点介绍&#xff1a;创建数据库管理表创建web项目引入quarzt nuget 包写具体配置操作&#xff0c;实现定时任务处理第一步&#xff1a;创建一个空web项目&#xff0c;引入quarzt nuget …

YbtOJ#20066-[NOIP2020模拟赛B组Day4]筹备计划【线段树,树状数组】

正题 题目链接:http://noip.ybtoj.com.cn/contest/90/problem/4 题目大意 一个集合[1,n]∈S[1,n]\in S[1,n]∈S&#xff0c;和一个序列aaa。有操作 序列aaa的一个数加上xxx序列aaa的一个数减去xxx将[l,r][l,r][l,r]加入集合SSS将[l,r][l,r][l,r]删除出集合SSS 每次修改后求…

【模拟】Biotech

Biotech 题目大意&#xff1a; 有一堆细胞&#xff08;放电或不放电&#xff09;&#xff0c;当周围细胞放电个数小于2或大于3时&#xff08;八个方向&#xff09;&#xff0c;此细胞变为不放电&#xff0c;当周围细胞放电个数为2时&#xff0c;此细胞不变&#xff0c;当周围…

.NET Core微服务之服务间的调用方式(REST and RPC)

一、REST or RPC ?1.1 REST & RPC微服务之间的接口调用通常包含两个部分&#xff0c;序列化和通信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等&#xff1b;通信比较流行的是http、soap、websockect&#xff0c;RPC通常基于TCP实现&am…

【记忆化搜索】【dfs】【递归】Chocolate

Chocolate 题目大意&#xff1a; 有一块巧克力&#xff08;每一个单位有一定的美味值&#xff09;&#xff0c;判断是否可以把他分为k块美味值相等的小巧克力 原题&#xff1a; 题目描述 Charlie 有一块巧克力。 这块巧克力是矩形的&#xff0c;有 n 行 m 列一共 n m 个大…