jzoj4800-[GDOI2017模拟9.24]周末晚会【dp,循环重构】

正题


题目大意

nnn个人的圆桌,可以放男可以放女,然后要求不能有连续kkk个女生坐在一起。求方案总数。


解题思路

先不考虑圆桌,设fi,jf_{i,j}fi,j表示放了i个人,最前面有连续jjj个女生,动态转移方程显然
fi,j=fi−1,j−1(j!=0)f_{i,j}=f_{i-1,j-1}(j!=0)fi,j=fi1,j1(j!=0)
fi,0=∑j=0nfi−1,jf_{i,0}=\sum_{j=0}^n f_{i-1,j}fi,0=j=0nfi1,j

rrr表示长度为lll不考虑循环重构的方案数那么有
ri=∑j=1kfi,j∗(j+1)r_i=\sum_{j=1}^k f_{i,j}*(j+1)ri=j=1kfi,j(j+1)
(j+1j+1j+1)表示圆桌旋转的方法

然后我们定义qiq_iqi表示长度为iii且不由循环节构成的方案总数那么有
qi=ri−∑d∣iqdq_i=r_i-\sum_{d|i}q_dqi=ridiqd
然后定义sis_isi表示长度为iii且包括循环重构的方案那么有
si=∑d∣iqdds_i=\sum_{d|i}\frac{q_d}{d}si=didqd
(循环重复了ddd次)


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#define ll long long
using namespace std;
const ll XJQ=1e8+7,N=2010;
ll power(ll x,ll b){ll ans=1;while(b){if(b&1) ans=ans*x%XJQ;x=x*x%XJQ;b>>=1;}return ans;
}
ll t,p[N][N],r[N],q[N],ans,n,k;
int main()
{scanf("%lld",&t);while(t--){scanf("%lld%lld",&n,&k);memset(p,0,sizeof(p));p[1][0]=1;for(ll i=1;i<=2000;i++)for(ll j=0;j<=min(i-1,k);j++){p[i+1][0]=(p[i+1][0]+p[i][j])%XJQ;p[i+1][j+1]+=p[i][j];}memset(r,0,sizeof(r));for(ll i=1;i<=n;i++)for(ll j=0;j<=k;j++)(r[i]+=p[i][j]*(j+1)%XJQ)%=XJQ;ans=0;for(ll i=1;i<=n;i++){q[i]=r[i];for(ll j=1;j<i;j++)if(i%j==0)q[i]=(q[i]-q[j]+XJQ)%XJQ; }for(ll i=1;i<=n;i++)if(!(n%i)) (ans+=q[i]*power(i,XJQ-2)%XJQ)%=XJQ;if(n<=k) ans++;printf("%lld\n",ans);}
}

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

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

相关文章

Scala与Java差异(二)之条件控制与循环

一、if表达式 &#xff08;1&#xff09;if表达式的定义 在Scala中&#xff0c;if表达式是有值的&#xff0c;就是if或者else中最后一行语句返回的值。 例如&#xff0c;val age 30; if (age > 18) 1 else 0 可以将if表达式赋予一个变量&#xff0c;例如&#xff0c;va…

WebApi client 的面向切面编程

.Net的面向切面编程.Net的服务端应用AOP很常见&#xff0c;在Asp.net MVC与Asp.net WebApi等新框架里到处都有AOP的影子&#xff0c;我们可以把一个服务方法“切”为很多面&#xff0c;日志面、验证面、请求方式处理、接口业务实现等多个面&#xff0c;有一些面可以使用过滤器特…

09-一对多关系建表

多表操作 目录 表之间关系一对多关系建表原则表之间关系 一对一关系&#xff1a;一夫一妻。 一对多关系&#xff1a; 一个部门有多个员工&#xff0c;一个员工只能属于某一个部门。 一个班级有多个学生&#xff0c;一个学生只能属于一个班级。 多对多关系&#xff1a; 一个…

jzoj6191-[NOI2019模拟2019.5.31]Exchange【线段树】

正题 题目大意 一个序列&#xff0c;给定若干个区间[l..r][l..r][l..r] 从l∼rl\sim rl∼r任意一个位置出发&#xff0c;见到比手中大的数字就交换&#xff0c;到rrr求最小的交换次数 (注意&#xff0c;并不是真的交换) 解题思路 首先算出每个点的后继(在它后面第一个比他大的…

面试阿里挂了却拿到网易、点我达offer,一个三年经验Java程序员的面试总结

转载自 面试阿里挂了却拿到网易、点我达offer&#xff0c;一个三年经验Java程序员的面试总结 前言 15年毕业到现在有三年多了&#xff0c;最近去面试了阿里集团&#xff08;菜鸟网络&#xff0c;蚂蚁金服&#xff09;、网易、滴滴、点我达&#xff0c;最终收到点我达、网易o…

10-多对一左连接查询分步查询(查询所有订单及订单对应的客户)

左连接查询&#xff08;级联查询&#xff09; 回顾一下&#xff1a;左连接查询&#xff0c;将左边表(order)里的全部内容查出&#xff0c;右边表(customer)查满足条件的。 SELECT * FROM order AS o LEFT JOIN customer AS c on o.cust_id c.cust_id;1那么在 MyBatis 中如何…

入门干货之Grpc的.Net 封装-MagicOnion

0x01、Grpc1、介绍Google主导开发的RPC框架&#xff0c;使用HTTP/2协议并用ProtoBuf作为序列化工具&#xff0c;支持多种语言。在.NET Core “大更新” 之前&#xff0c;也就是目前来说还算是个很不错的选择。2、吐槽a、有很多性能比较的文章拿Grpc开涮.b、搭建困难&#xff0c…

欢乐纪中A组周六赛【2019.6.1】

前言 六一儿童节快乐(然而我还在学校) dalao都走了&#xff0c;导致只剩下我们这帮菜鸡在被虐 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC111(J−2)ZYC(J-2)ZYC(J−2)ZYC1301301303030301001001000002…

11-分步查询懒加载

分步查询——懒加载模式 目录 懒加载模式示例不使用懒加载使用懒加载aggressiveLazyLoadinglazyLoadTriggerMethods所谓懒加载&#xff0c;也称延时加载&#xff0c;是指不一下子加载完全部资源。需要用到哪些资源才去加载这些资源&#xff0c;用不到的资源&#xff0c;就不去…

利用Service Fabric承载eShop On Containers

从模块化到微服务化从Pet Shop 到eShop on Container都是Microsoft在技术演进的路径上给开发者展示.Net的开发能力和架构能力的Sample工程&#xff0c;Petshop的时候更多的是展现应用的分层架构&#xff0c;设计的抽象与模块间的通讯。到了eShop on Container更多的关注在架构设…

2019阿里天猫团队Java高级工程师面试题之三轮面试

转载自 2019阿里天猫团队Java高级工程师面试题之三轮面试 作者&#xff1a;编程砖家 https://www.cnblogs.com/xiaoyangjia/p/10697324.html 一.第一面 1.五分钟自我介绍&#xff0c;说说自己的擅长及拿手的技术 自我介绍是为了考察面试者的语言表达和总结概括能力&#x…

P2680-运输计划【LCA,树上差分,二分答案】

正题 题目链接:https://www.luogu.org/problemnew/show/P2680 题目大意 一棵带权无根树&#xff0c;给出若干条路径。选择一条边使其边权变为0&#xff0c;要求路径的长度的最大值最小。 解题思路 首先最大值最小我们可以想到二分答案&#xff0c;现在我们二分到midmidmid了…

12-多对一添加操作(添加新客户及对应的新订单)

多对一添加操作 场景&#xff1a;现在想要添加一个新客户对应一个新订单&#xff0c;那么要怎么来添加呢&#xff1f; 分析&#xff1a;由于添加订单时&#xff0c;客户对订单是一对多的关系&#xff0c;所以添加订单的时候必须要指明一位客户。 要同时添加新客户以及一个新订…

.NET Core+MySql+Nginx 容器化部署

1. 引言上两节我们通过简单的demo学习了docker的基本操作。这一节我们来一个进阶学习&#xff0c;完成ASP.NET Core MySql Nginx的容器化部署。本文是基于CentOS 7.4环境进行演示&#xff0c;示例项目可以访问Docker.NetCore.MySql进行下载。2. Hello MySQL同样我们还是以循序…

HiveSQL常用优化方法全面总结

转载自 HiveSQL常用优化方法全面总结 Hive作为大数据领域常用的数据仓库组件&#xff0c;在平时设计和查询时要特别注意效率。影响Hive效率的几乎从不是数据量过大&#xff0c;而是数据倾斜、数据冗余、job或I/O过多、MapReduce分配不合理等等。对Hive的调优既包含对HiveQL语…

P3597-[POI2015]WYC【矩阵乘法,倍增】

前言 正题 题目链接:https://www.luogu.org/problemnew/show/P3597 题目大意 问第kkk长的路径长度(非简单路径) 解题思路 先考虑kkk比较小时的情况&#xff0c;我们可以求出长度为111的路径&#xff0c;长度为222的路径&#xff0c;然后以此类推找到第一个与前面的和到kkk就…

13-一对多左连接查询分步查询(查询所有客户及客户对应的订单)

查询所有客户以及对应的订单 目录 左连接查询&#xff08;不支持懒加载&#xff09;分步查询&#xff08;支持懒加载&#xff09;左连接查询&#xff08;不支持懒加载&#xff09; 场景&#xff1a;我们想要查询出所有的客户&#xff0c;并且把每个客户对应的订单也查出来。…

实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作

转载自 实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作 供稿 | eBay ADI-Carmel Team 作者 | 金澜涛 编辑 | 顾欣怡 本文7309字&#xff0c;预计阅读时间22分钟 导读 本文介绍eBay Carmel团队利用Delta Lake&#xff0c;使Spark SQL支持Teradata的Update/Delete语法。…

14-多对多关系建表

多对多关系建表 目录 多对多关系多对多关系建表原则domain多对多关系 一个老师可以教多个学生&#xff0c;一个学生可以被多个老师教。一个学生可以选择多门课程&#xff0c;一门课程可以被多个学生选择。一个用户可以选择多个角色&#xff0c;一个角色可以被多个用户选择。…

DevOps文档中心的技术实践演进

这应该算是《Git企业开发者教程》的篇外篇&#xff0c;介绍一下这个教程是怎样写出来的。相信每个技术人都有类似下面的文件夹&#xff0c;保存着你辛苦工作的成果。实际的感觉&#xff1a;看着闹心&#xff0c;弃之不舍。一份文档久经修改&#xff0c;不能定稿&#xff0c;循环…