带颜色数限制的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. rm: 无法删除 "xxxxx.o" : 输入/输出错误.

    rm: 无法删除 "xxxxx.o" : 输入/输出错误. 碰到无法删除的文件,以为完蛋了,要重装. 后面重启一下就可以了

  2. ubuntu setup adb tool

    sudo add-apt-repository ppa:nilarimogard/webupd8sudo apt-get updatesudo apt-get install android-tool ...

  3. How To Install Apache Kafka on Ubuntu 14.04

    打算学习kafka ,接触一些新的知识.加油!!! 参考:https://www.digitalocean.com/community/tutorials/how-to-install-apache- ...

  4. C++11 左值与右值

    概念 左值:表达式结束后依然存在的对象 右值:表达式结束后就不存在的临时对象 2.如何判断左值和右值 能不能对表达式取地址,如果能,就是左值,否则就是右值 3.对下面的语句进行区分 int a = 3 ...

  5. Games on a CD

    Games on a CD time limit per test 4 seconds memory limit per test 512 megabytes input standard input ...

  6. oracle 常用sql语句

    oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...

  7. Android中获取网络数据时的分页加载

    //此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载,    蓝色部分是睡眠时间,自我感觉不用写  ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...

  8. 更换arm-linux-gcc 4.3.2编译器

    先创建一个临时目录:mcx@mcx-virtual-machine:/home/work/tools$ mkdir tmp 解压到根目录:mcx@mcx-virtual-machine:/home/w ...

  9. sql 语句操作

    插入:insert into table1(field1,field2) values(value1,value2) db.execSQL(sql) db.execSQL(sql, bindArgs) ...

  10. 报错:error C2229: class ' ' has an illegal zero-sized array 引发的思考

    问题: