UVA 11255 Necklace(Polya)
2014-04-15 18:24
302 查看
题意:求用给定颜色数量的珠子组成的不等价的项链的个数。
思路:还是利用Polya解决,但是计算C(f)可能麻烦一些,分类讨论了下情况,处理好着色问题基本就ok了。
代码:
思路:还是利用Polya解决,但是计算C(f)可能麻烦一些,分类讨论了下情况,处理好着色问题基本就ok了。
代码:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<map> #include<queue> #include<stack> #include<cmath> #include<vector> #define inf 0x3f3f3f3f #define Inf 0x3FFFFFFFFFFFFFFFLL #define eps 1e-9 #define pi acos(-1.0) using namespace std; typedef long long ll; const int maxn=44; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } ll C[maxn][maxn]; int a,b,c; void Init() { memset(C,0,sizeof(C)); C[0][0]=1; for(int i=1;i<maxn;++i) { C[i][0]=1; for(int j=1;j<=i;++j) C[i][j]=C[i-1][j-1]+C[i-1][j]; } } ll cal(int a,int b,int c,int len,int tot) { ll res=0,tmp; if(a%len==0&&b%len==0&&c%len==0) { tmp=C[tot][a/len]; tot-=a/len; tmp*=C[tot][b/len]; res+=tmp; } return res; } ll solve() { ll ans=0; int n=a+b+c,num,len; for(int i=0;i<n;++i) { num=gcd(n,i); len=n/num; ans+=cal(a,b,c,len,num); } if(n&1) { if(a) ans+=cal(a-1,b,c,2,(n-1)/2)*n; if(b) ans+=cal(a,b-1,c,2,(n-1)/2)*n; if(c) ans+=cal(a,b,c-1,2,(n-1)/2)*n; } else { ans+=(n/2)*cal(a,b,c,2,n/2); int aa,bb,cc; for(int i=0;i<3;++i) for(int j=0;j<3;++j) { aa=a;bb=b;cc=c; if(i==0) aa--; else if(i==1) bb--; else cc--; if(j==0) aa--; else if(j==1) bb--; else cc--; if(aa<0||bb<0||cc<0) continue; ans+=(n/2)*cal(aa,bb,cc,2,(n-2)/2); } } return ans/(2*n); } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); Init(); int t; scanf("%d",&t); while(t--) { scanf("%d%d%d",&a,&b,&c); ll ans=solve(); printf("%lld\n",ans); } return 0; }
相关文章推荐
- Necklace UVA - 11255(polya计数)
- uva 11255 Necklace (polya)
- UVA11255 necklace (polya定理)
- UVA 11255 Necklace(Burnside引理)
- UVA 11255 Necklace
- UVA 11255 Necklace(每种颜色珠子个数限制、Polya原理、组合数)
- Necklace UVA - 11255
- UVA - 11255 Necklace (poolya计数+组合数学)
- UVA 11255 Necklace
- uva11255 - Necklace 项链旋转翻转 置换
- uva11255 Necklace(polya+组合数学)
- UVA - 11255 Necklace 母函数型polya
- UVA 11255 - Necklace(Ploya)
- UVA 11255 - Necklace (等价置换)
- uva 11255 Necklace
- uva 11255 - Necklace(置换)
- UVa 10054 The Necklace(欧拉回路)
- uva 10054 The Necklace(欧拉回路)
- UVa 10054 - The Necklace
- The Necklace ——UVA - 10054(欧拉回路)