带颜色数限制的polya计数。

其实感觉一样了。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 50
using namespace std;
long long t,col[],c[maxn][maxn],n;
long long gcd(long long a,long long b)
{
if (!b) return a;
return gcd(b,a%b);
}
void get_table()
{
c[][]=;
for (long long i=;i<=;i++)
{
c[i][]=;
for (long long j=;j<=;j++)
c[i][j]=c[i-][j-]+c[i-][j];
}
}
long long circ()
{
long long ret=;
for (long long i=;i<n;i++)
{
long long d=gcd(i,n),x=n/d,base=;
if ((col[]%(n/d)) || (col[]%(n/d)) || (col[]%(n/d))) continue;
for (long long j=;j<=;j++)
{
base*=c[d][col[j]/x];
d-=col[j]/x;
}
ret+=base;
}
return ret;
}
long long reflect()
{
long long ret=,ret1=,ret2=;
if (n&)
{
long long cols[];
if ((col[]&) && (col[]&) && (col[]&)) return ;
for (long long i=;i<=;i++) {cols[i]=col[i];if (cols[i]&) cols[i]--;}
long long sum=n/;
for (long long i=;i<=;i++)
{
ret*=c[sum][cols[i]/];
sum-=cols[i]/;
}
return ret*n;
}
else
{
long long cnt=,cols[];
for (long long i=;i<=;i++) {cnt+=(col[i]&);cols[i]=col[i];}
if (cnt==)
{
for (long long i=;i<=;i++) if (cols[i]&) cols[i]--;
long long sum=(n-)/;
for (long long i=;i<=;i++)
{
ret1*=c[sum][cols[i]/];
sum-=cols[i]/;
}
ret1*=(n/);ret1*=;
}
else
{
ret1=;
for (long long i=;i<=;i++)
{
long long base=,cols[],sum=(n-)/;
for (long long j=;j<=;j++) cols[j]=col[j];
cols[i]-=;
for (long long j=;j<=;j++)
{
base*=c[sum][cols[j]/];
sum-=cols[j]/;
}
ret1+=base;
}
ret1*=(n/);
}
if (!cnt)
{
long long sum=n/;
for (long long i=;i<=;i++)
{
ret2*=c[sum][cols[i]/];
sum-=cols[i]/;
}
ret2*=(n/);
}
else ret2=;
return ret1+ret2;
}
}
void work()
{
scanf("%lld%lld%lld",&col[],&col[],&col[]);
n=col[]+col[]+col[];
printf("%lld\n",(circ()+reflect())/(*(col[]+col[]+col[])));
}
int main()
{
get_table();
scanf("%lld",&t);
for (long long i=;i<=t;i++) work();
return ;
}

UVA 11255 Necklace的更多相关文章

  1. polya burnside 专题

    polya题目:uva 11077 Find the Permutationsuva 10294 Arif in DhakaLA 3641 Leonardo's Notebookuva 11077 F ...

  2. Burnside&Polya总结

    这里就算是一个小总结吧- 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/han ...

  3. Burnside&Polya总结

    这里就算是一个小总结吧- 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/han ...

  4. UVA 10054 The Necklace(欧拉回路,打印路径)

    题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  5. uva 10054 The Necklace(欧拉回路)

    The Necklace  My little sister had a beautiful necklace made of colorful beads. Two successive beads ...

  6. UVa 10054 The Necklace(无向图欧拉回路)

    My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...

  7. UVA 10054 the necklace 欧拉回路

    有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...

  8. UVA 10054 (欧拉回路) The Necklace

    题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...

  9. UVa 10054 (打印欧拉回路) The Necklace

    将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路. #include <cstdio> #include <cstring> + ; int G[ ...

随机推荐

  1. linux4.1.6+aufs4.1

    http://aufs.sourceforge.net/ linux kernel version aufs version 4.0 and later aufs4 Currently aufs4 s ...

  2. git 提交到github时不用每次都输入用户名,密码

    Permanently authenticating with Git repositories, Run following command to enable credential caching ...

  3. CAPSPageMenu分页交互

    最近在开发过程中,我的前任在处理类似于新闻多板块的界面,在一个视图控制器里加载多个UITableView以显示不同类型的信息,并可通过头部按钮和左右滑动来切换不同的tableView这样的界面中,采取 ...

  4. UITabBarItem's appearance

    1.我们知道,用tabBarController创建出来默认的tabBar似这个样子滴... -----------------我是图片分割线----------------------------- ...

  5. 转一篇分析C语言调用时栈的变化的好文

    http://blog.csdn.net/zsy2020314/article/details/9429707

  6. 编译使用tinyxml

    环境: win7 32位旗舰版,VS2010,tinyxml_2_6_2版本 1.下载tinyxml,并解压到tinyxml文件夹下 2.生成动态链接库 原生的Tinyxml只支持静态库(没有在.h文 ...

  7. 为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口

    在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接 口.实现这两者的目的是为了向更上一层提供硬件访问接口,即 ...

  8. [转]程序开发基础学习二(C++ Google Style 命名规则)

    无规矩不成方圆,新的岗位就需要服从团队的编码规则.很开心团队用的是Google的C++编码规则,大概看了下Google 的编码规则,正如九天翔雁说的:“Google的 C++ Style Guide远 ...

  9. javascript语句语义大全(1)

    1. <script></script> javascript标签对,所有javascript内容都会写在这个里面 2. var a=0; var a; 变量的声明,上面的是声 ...

  10. CSS3边框

    border-radius box-shadow border-image border-radius可以创建圆形,如果一个元素是正方形,则设置border-radius为边长,则为圆形 box-sh ...