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 蛤玮向 ...
随机推荐
- PAT 1038 体验Python之美
1038. Recover the Smallest Number (30) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHE ...
- IT应聘者的简历应该是怎么样的?
从去年到现在看了几百份简历,包括产品运营和产品设计师的职位.我不是 HR,只是想直接看到求职者的状况,看看是不是要换更准确的渠道去招聘对的人.我看简历的目的也很简单:找到没有什么问题且可能合适的人,然 ...
- ip_conntrack缓存neighbour
在我的ip_conntrack版本中,它目前已经可以缓存路由,filter规则等,还可以平滑生效最新配置的NAT,它越来越像真正的SDN了,唯一有待完善的就是将5元组的tuple进化成N元组的tupl ...
- google搜索新姿势
大前提:英文Google→http://www.google.com或http://www.google.cn 第一篇 在搜索框上输入:"indexof/"inurl:lib 再按 ...
- 推送通知/传感器/UIDynamic仿真(推送通知已适配iOS10)
推送通知/传感器/UIDynamic 一.推送通知 1.推送通知简介 什么是推送通知 此处的推送通知与NSNotification没有任何关系 可以理解为,向用户推送一条信息来通知用户某件事情 作用: ...
- HTML5初学者福利!11个在线学习网站推荐
HTML5初学者福利!11个在线学习网站推荐 HTML5的强大及流行趋势,让更多的人想要系统的对它进行学习.而大多数人获取HTML5知识的重要途径都是网络,不过面对五花八门的搜索结果,是不是觉得摸不着 ...
- ListBox获取行字符串
ListBox获取行字符串 关键点 获取ListBox第1行的字符串 获取ListBox第2行的字符串 获取ListBox第n行的字符串 CListBox::GetText int GetText( ...
- Android框架浅析之锁屏(Keyguard)机制原理
最近终于成功的摆脱了FM收音机,迈向了新的模块:锁屏.状态栏.Launcher---姑且称之为“IDLE”小组,或许叫手机 美容小组,要是能施展下周星星同学的还我漂漂拳,岂不快哉. OK,闲话打住,咱 ...
- C学习笔记之预处理指令
一.什么是预处理指令 预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包括,条件编译. 预处理指令一般以 # 号开头,能够出如今文件的不论什么地方, ...
- MySQL主主复制+LVS+Keepalived实现MySQL高可用性
http://bestvivi.com/2015/09/09/MySQL%E4%B8%BB%E4%B8%BB%E5%A4%8D%E5%88%B6+LVS+Keepalived%E5%AE%9E%E7% ...