UVA 11255 Necklace
带颜色数限制的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的更多相关文章
- polya burnside 专题
polya题目:uva 11077 Find the Permutationsuva 10294 Arif in DhakaLA 3641 Leonardo's Notebookuva 11077 F ...
- Burnside&Polya总结
这里就算是一个小总结吧- 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/han ...
- Burnside&Polya总结
这里就算是一个小总结吧- 附参考的网址: http://blog.sina.com.cn/s/blog_6a46cc3f0100s2qf.html http://www.cnblogs.com/han ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 10054 The Necklace(欧拉回路)
The Necklace My little sister had a beautiful necklace made of colorful beads. Two successive beads ...
- UVa 10054 The Necklace(无向图欧拉回路)
My little sister had a beautiful necklace made of colorful beads. Two successive beads in the neckla ...
- UVA 10054 the necklace 欧拉回路
有n个珠子,每颗珠子有左右两边两种颜色,颜色有1~50种,问你能不能把这些珠子按照相接的地方颜色相同串成一个环. 可以认为有50个点,用n条边它们相连,问你能不能找出包含所有边的欧拉回路 首先判断是否 ...
- UVA 10054 (欧拉回路) The Necklace
题目:这里 题意:有一种由彩色珠子连接而成的项链,每个珠子两半由不同颜色(由1到50的数字表示颜色)组成,相邻的两个珠子在接触的地方颜色相同,现在有一些零碎的珠子,确认它是否能 复原成完整的项链. 把 ...
- UVa 10054 (打印欧拉回路) The Necklace
将每个颜色看成一个顶点,对于每个珠子在两个颜色之间连一条无向边,然后求欧拉回路. #include <cstdio> #include <cstring> + ; int G[ ...
随机推荐
- groupbox 下的datagridview的列标题字体修改混乱
groupbox 下的datagridview的列标题字体修改混乱
- headless
http://www.oschina.net/translate/using-headless-mode-in-java-se
- jarsigner
开发者应用认领说明 Flyme应用中心应用认领,采用Android的apk安装包签名机制来完成.如果你不清楚签名是什么,请联系开发人员协助您. 在Android平台发布应用程序之前,必须经过一个签名流 ...
- Bookmark
http://stackoverflow.com/https://www.baidu.com/?tn=06074089_27_pghttp://apistore.baidu.com/http://to ...
- UML类图图示样例
下图来自<大话设计模式>一书:
- 8.1 sikuli报错: 提示没有对应的javaw
对于sikuli,需要安装32位的jdk且不能高于1.7的版本. 对于64位系统的C盘,Program Files文件夹是64位的,Program File(x86)文件夹是32位的 需要安装一个32 ...
- CodeForces 719B Anatoly and Cockroaches 思维锻炼题
题目大意:有一排蟑螂,只有r和b两种颜色,你可以交换任意两只蟑螂的位置,或涂改一个蟑螂的颜色,使其变成r和b交互排列的形式.问做少的操作次数. 题目思路:更改后的队列只有两种形式:长度为n以r开头:长 ...
- ReactiveCocoa & FRP & MVVM
Functional Reactive Programming(以下简称FRP)是一种响应变化的编程范式.先来看一小段代码 a = 2 b = 2 c = a + b // c is 4 b = 3 ...
- 下拉刷新和上拉加载 Swift
转载自:http://iyiming.me/blog/2015/07/05/custom-refresh-and-loading/ 关于下拉刷新和上拉加载,项目中一直使用MJRefresh(原先还用过 ...
- dom4j基本使用用法
DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working ...