bzoj1547 周末晚会
我们要求方案数,还是旋转同构的,想burnside,如果我们能计算出转i位不变的满足条件的数量,那么这道题我们就解决了。
考虑转i位时,设tmp=gcd(i,n),那么就共有tmp个循环节。
当tmp<=k时,只要不是所有的循环节都是女生就可以,所以数量为2^tmp-1,但是要特判k>=n,因为这时所有方案都满足条件。
当tmp>k时,我们需要在提前处理出符合条件的且旋转不变的方案数,考虑dp,我们设f[i][j]表示长度为i的线段第一位是男生,末尾有且仅有j位女生的满足条件的方案,g[i][j]与f相同,只是不限首位。h[i]表示环的,就是线段的去掉首尾相加大与k的,这里注意中间的区间位置不唯一。
最后直接上burnside就好了!
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define int long long
#define N 2050
#define mod 100000007
using namespace std;
int T,n,m,ans;
int f[N][N],g[N][N],h[N],s[N],pw[N];
int qp(int a,int b){
int c=;
while(b){
if(b&)c=c*a%mod;
a=a*a%mod; b>>=;
}return c;
}
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
signed main(){
scanf("%lld",&T);
pw[]=;
for(int i=;i<=;i++)pw[i]=(pw[i-]<<)%mod;
while(T--){
ans=;
scanf("%lld%lld",&n,&m);
f[][]=s[]=;f[][]=;
for(int i=;i<=n;i++){
f[i][]=s[i]=s[i-];
for(int j=;j<=m&&j<i;j++){
f[i][j]=f[i-][j-];
(s[i]+=f[i][j])%=mod;
}
}
g[][]=s[]=;
for(int i=;i<=n;i++){
g[i][]=s[i]=s[i-];
for(int j=;j<=m&&j<=i;j++){
g[i][j]=g[i-][j-];
(s[i]+=g[i][j])%=mod;
}
h[i]=s[i];
for(int j=m+;j<=*m&&j<i;j++)
h[i]=(h[i]-(f[i-j][]*max((int),min(j-,m)-max((int),j-m)+(int)))%mod+mod)%mod;
}
for(int i=;i<=n;i++){
int tmp=gcd(i,n);
if(tmp<=m){
if(m>=n)ans=(ans+pw[tmp])%mod;
else ans=(ans+pw[tmp]-+mod)%mod;
}
else ans=(ans+h[tmp])%mod;
}
ans=ans*qp(n,mod-)%mod;
printf("%lld\n",ans);
}
return ;
}
bzoj1547 周末晚会的更多相关文章
- [BZOJ1547]周末晚会:Burnside引理+DP
分析 Attention!这道题的模数是\(1e8+7\). 注意到循环同构会被认为是同一种方案,我们可以把顺时针旋转每个人的位置作为置换,容易发现这些置换一定会形成一个置换群,于是题目所求的所有合法 ...
- BZOJ3632: 外太空旅行
BZOJ1547: 周末晚会 https://lydsy.com/JudgeOnline/problem.php?id=1547 分析: 对于一个串旋转若干次会回到本身,旋转次数即是同构个数,这个东西 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 周末惊魂:因struts2 016 017 019漏洞被入侵,修复。
入侵(暴风雨前的宁静) 下午阳光甚好,想趁着安静的周末静下心来写写代码.刚过一个小时,3点左右,客服MM找我,告知客户都在说平台登录不了(我们有专门的客户qq群).看了下数据库连接数,正常.登录阿里云 ...
- 浅谈MITM攻击之信息窃取(解密315晚会报道的免费WIFI窃取个人信息)
前言 所谓的MITM攻击(即中间人攻击),简而言之就是第三者通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方毫无感知.这个很早就成为黑客常用的手段,一会聊的315晚会窃取个人信息只是 ...
- 【Python数据分析】工作日发文章比周末发文章访问量高?
前言 看前面有位朋友分析了一下每天某个时间发文章的访问量区别,以讨论非系统性因素对文章访问量的影响.之所以进一步讨论工作日和周末发文对文章访问量的影响,一是觉得很有意思,二是毕业设计与此有很大关系,三 ...
- 群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!
今日周末,改了个表单验证然后无所事事了,然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还 ...
- (转)Oracle 获取上周一到周末日期的查询sql语句
-- Oracle 取上周一到周末的sql -- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20130906','yyyymmdd'),'d') f ...
- 昨天晚上画了个带apple的图:ide插件与php和xdebug通信原理图,周末写1个调试器。
昨天晚上画了个带apple的图:ide插件与php和xdebug通信原理图,周末写1个调试器.
随机推荐
- jBPM4工作流应用开发指南
首先十分感谢作者给我这个机会在他的作品即将问世之前做一些感想,也正好让我能在忙碌中抽空回顾一下这么多年在技术平台方面走过的路以及在Workflow方面的点点滴滴.因为本书是介绍jBPM的专业书籍,所以 ...
- JAVA学习总结-面向对象
前言:java面向对象中的知识可以说是整个java基础最核心的部分,不知不觉已经学完快2个月了,是时候复习一波了,刚开始学习的时候被绕的很懵逼,这次总结完毕之后有了很多新的感悟,这就是所谓的每有会意, ...
- [更新]单线程的JS引擎与 Event Loop
先来思考一个问题,JS 是单线程的还是多线程的?如果是单线程,为什么JavaScript能让AJAX异步发送和回调请求,还有setTimeout也看起来像是多线程的?还有non-blocking IO ...
- No plugin found for prefix 'tomcat' in the current project and in the plugin groups和java.net.BindException: Address already in use: JVM_Bind <null>:8080的错误解决
错误报告:No plugin found for prefix 'tomcat' in the current project and in the plugin groups [org.apache ...
- Create R NoteBook require updated versions of the following packages : knitr,rmarkdown.
Create R NoteBook require updated versions of the following packages : knitr,rmarkdown. 点击yes安装失败的时 ...
- jenkins构建基于gradle的springboot项目CI采坑(采用jar方式部署)
试了一堆插件,最后用的还是 publish over SSH jenkins基本配置不多说了,就是配置一下git仓储,配置一下gradle执行命令 clean bootRepackage 之后执行Se ...
- jenkins中集成commander应用
jenkins中集成commander应用 jenkins 集成测试 promotion 最近参加公司的集成测试平台的开发,在开发中遇到了不少问题,两个星期的迭代也即将完成,在这也用这篇博客记录下开发 ...
- python__基础 : 类的__init__,__str__,__del__方法
__init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里 ...
- Scala学习笔记:重要语法特性
1.变量声明 Scala 有两种变量, val 和 var val的值声明后不可变,var可变 val msg: String = "Hello yet again, world!&quo ...
- C++相关:部分标准库特殊设施
C++ tuple(元组) tuple是C++11新标准里的类型.它是一个类似pair类型的模板.pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以 ...