bzoj4330:JSOI2012 爱之项链
题目大意:一串项链由n个戒指组成,对于每个戒指,一共有M个点,R种颜色,且旋转后相同的戒指是相同的,然后一串项链又由N个戒指组成,同时要满足相邻的两个戒指不能相同,这串项链上某个位置插入了一个特殊的东西,且如果特殊的东西插入的地方不同,即使戒指都是相同的,这两串项链也是不同的,求一共有多少不同的爱之项链。
思路:首先可以求出一共有多少种不同的戒指,又由于有那个特殊的东西,相当于这串项链即使旋转后相同,但特殊的东西插入的位置也肯定是不同的,因此即不考虑旋转,只考虑相邻位置不同的爱之项链的方案数。
令ans表示有多少种不同的戒指。
然后这样就可以运用容斥原理。对于第i个戒指和第i+1个戒指相同,可以看成第i个限制,然后第n个限制即第n个戒指和第1个限制不同,那么即要求满足所有限制的方案数。令Si为满足第i个限制的方案数的集合,那么即求S1~Sn的交,也就是其补集的并,那么就是总方案数减去所有不满足任意一个限制数加上所有不满足任意二个限制数......
然后这个式子是怎样的呢,首先总方案数显然就是ans^n,然后不满足任意一个限制数即有两个相邻的相同,可以看成一条边连接的两个点相同,就是C(n,1)*ans^(n-1),以此类推,然后可以得到:sigma(0<=i<=n,(-1)^i*C(n,i)*ans^(n-i)),然后发现这就是二项式定理,就可以得到(ans-1)^n, 但真的就是这样吗?当i=n时,就会有一个Bug,用公式算得的答案是(-1)^n,然而n个限制均不满足时的情况即所有颜色都一样,有ans种,因此还要加上(n&1?1-m:m-1)才行。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define p 3214567
#define maxn 200020 int m,r,tot;
int prime[maxn],phi[maxn];
bool isprime[maxn];
long long n; int power(int a,long long k){
if (k==) return ;
if (k==) return a%p;
int x=power(a,k/),ans=1ll*x*x%p;
if (k&) ans=1ll*a*ans%p;
return ans;
} int fphi(int x){
int ans=x;
for (int i=;i*i<=x;i++)
if (x%i==){
ans=ans-ans/i;
while (x%i==) x/=i;
}
if (x!=) ans=ans-ans/x;
return ans;
} int main(){
scanf("%lld%d%d",&n,&m,&r);tot=,memset(isprime,,sizeof(isprime)),phi[]=;
for (int i=;i<maxn;i++){
if (isprime[i]) prime[++tot]=i,phi[i]=i-;
for (int j=;j<=tot && i*prime[j]<maxn;j++){
isprime[i*prime[j]]=;
if (i%prime[j]==){
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
phi[i*prime[j]]=phi[i]*(prime[j]-);
}
}
int ans=;
for (int i=;i*i<=m;i++)
if (m%i==){
ans=(ans+1ll*power(r,i)*fphi(m/i)%p)%p;
if (i*i!=m) ans=(ans+1ll*power(r,m/i)*phi[i]%p)%p;
}
ans=1LL*ans*power(m,p-)%p;
int t=(1ll*power(ans-,n)+(n&?-ans:ans-))%p;
printf("%d\n",(t+p)%p);
return ;
}
bzoj4330:JSOI2012 爱之项链的更多相关文章
- bzoj 4330: JSOI2012 爱之项链
听说这题不公开.. 那就不贴题意了 首先要用burnside引理求出戒指的种数,那么对于一个顺时针旋转$k$个位置的置换就相当于连上一条$(i,(i+k)%R)$的边,每个环颜色必须相同 环的个数为$ ...
- 洛谷 P5233 - [JSOI2012]爱之项链(Polya 定理+递推)
洛谷题面传送门 首先很明显题目暗示我们先求出符合条件的戒指数量,再计算出由这些戒指能够构成的项链的个数,因此考虑分别计算它们.首先是计算符合条件的戒指数量,题目中"可以通过旋转重合的戒指视作 ...
- BZOJ3202 [Sdoi2013]项链
Problem E: [Sdoi2013]项链 Time Limit: 30 Sec Memory Limit: 512 MBSubmit: 427 Solved: 146[Submit][Sta ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj3202:[Sdoi2013]项链
思路:首先考虑如何求珠子个数,一个珠子由a,b,c三个数组成且属于区间[1,a],并满足gcd(a,b,c)=1.由于要求本质相同,对于a,b,c这样的一个无序的数列且满足gcd(a,b,c)=1,设 ...
- BZOJ1878[SDOI2009]HH的项链
Description HH有一串由各种漂亮的贝壳组成的项链.HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH不断地收集新的贝壳,因此, 他的项链变 ...
- bzoj 3202: [Sdoi2013]项链
Description 项链是人体的装饰品之一,是最早出现的首饰.项链除了具有装饰功能之外,有些项 链还具有特殊显示作用,如天主教徒的十字架链和佛教徒的念珠. 从古至今人们为了美化人体本身,也美 化环 ...
- BZOJ 1878: [SDOI2009]HH的项链
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3548 Solved: 1757[Submit][Statu ...
- ZZULI 1876: 蛤玮的项链 Hash + 二分
Time Limit: 6 Sec Memory Limit: 128 MBSubmit: 153 Solved: 11 SubmitStatusWeb Board Description 蛤玮向 ...
随机推荐
- VisualBox会造成VPN连接不上问题
今天连接VPN查找点资料,但是怎么也连接不上,一直出现651错误,开始以为是服务器配置原因,重新配置后发现问题依旧,后查找相关资料,发现有提到VisualPC, 感觉VisualBox跟VisualP ...
- TCP、UDP、IP包头结构分析(转)
1.TCP数据段格式 TCP是一种可靠的.面向连接的字节流服务.源主机在传送数据前需要先和目标主机建立连接.然后,在此连接上,被编号的数据段按序收发.同时,要求对每个数据段进行确认,保证了可靠性.如果 ...
- KVC 和KVO浅谈
一.KVC:Key-Value -Coding :直译为:键-值-代码:即:对键值进行改变的代码方法 该方法是OC(Object-C)为我们提供的一个不通过初始化方法而直接改变对象实例变量值的一种 ...
- UISegmetControl
一.UISegmentControl是一个分段控件,父类是UIControl,内涵数个button,并且都有对应下标index: NSArray *titles = @[@"护卫队" ...
- 动态添加DOM时,绑定的click事件会重复执行
最近因为业务需求,需要重写window的alert和confirm弹窗,但是每次显示的提示按钮不相同,所有每次打开的弹窗都需要重写生成,但是对于相同的按钮会保留上次创建时的click事件,所以当你创建 ...
- lua 学习笔记(一)
lua 中的方法: 1. type("test"): 返回数据类型 2.#"zhangsan": 返回字符串的长度 3.string.gsub("字符 ...
- RichTextBox返回值标记不同颜色
在Button按钮下,将脚本的执行结果返回到richtextbox中: 如果返回值包含“failed",则该行标记为红色 .\Scripts\升级_ERP.ps1 | % { If ($_. ...
- ThinkPHP3.1 常量参考
预定义常量 常量 说明 URL_COMMON=0 普通模式 URL URL_PATHINFO=1 PATHINFO URL URL_REWRITE=2 REWRITE URL URL_COMPAT=3 ...
- [HTTP] Origins, CROS, Preflight
Origins made up of three parts the data scheme, the hostname and the prot. It is important to know t ...
- CSS3超酷移动手机滑动隐藏側边栏菜单特效
这是一组共4种效果很炫酷的CSS3移动手机滑动隐藏側边栏菜单特效. 这四种效果各自是:默认的点击滑动側边栏菜单效果.带3D transforms的滑动側边栏效果.文字缩放和淡入淡出效果的滑动側边栏以及 ...