上一页 1 2 3 4 5 6 ··· 20 下一页
  2012年9月14日
摘要: 题意:n个小圆组成的正n边形,中间有一个大圆。有木棍相连的两个圆不能有相同的颜色,旋转后相同视为相同的方案,求着色方案数。设有n个小圆,k种颜色(3<=N<=10^9, 4<=K<=10^9)。首先,很容易想到从k种选一种给大圆,然后用k-1种颜色对小圆着色。若不存在相邻圆颜色不同这个限制,则直接Burnside定理。若存在限制,但是颜色种数很少,可以构造矩阵然后快速幂,得到一个置换使着色不变的着色方案数。现在颜色种数很多,但是颜色限制较简单,可以考虑公式之类的。考虑将n个圆的环,等分成t部分,每部分有m个圆。F表示m个圆满足限制的着色方案数。若m=1,则F=0若m=2 阅读全文
posted @ 2012-09-14 14:50 DrunBee 阅读(782) 评论(0) 推荐(0) 编辑
摘要: 题意:一个圆上有n个点,用不同的角度表示,用k种颜色对n个点着色,旋转后相同视为同一种着色方案,问着色方案数。举几个例子:0 90000 180000 270000,每次旋转90度,每个点都能重合。0 45000 90000 180000 270000,无论怎么旋转,都不能重合。30000 150000 180000 330000,旋转180度才能重合。如何判断在旋转360度之内,能重合几次。将两个连续的点之间的角度差值处理出来,最多循环t次,那么有t个旋转使得重合。这可以用到next数组的性质。设当前得到a个循环,每个循环b个点。那么可以把b个点看成一个点,那么问题转化为a个点构成的环,着k 阅读全文
posted @ 2012-09-14 00:37 DrunBee 阅读(451) 评论(0) 推荐(0) 编辑
  2012年9月13日
摘要: 题意:用k种颜色对立方体着色,旋转后相同视为相同的方案,求着色方案数。六个面,每个面为底可以有4个旋转,总共24种置换。初始时对下底面旋转有:x^8 + x^2 + x^4 + x^2将垂直于水平面的四个面翻转90度到底面,并有四个旋转:4*(x^2 + x^4 + x^4 + x^4)。将上底面旋转180度到下底面,并有四个旋转:x^4 + x^4 + x^4 + x^4。 1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 public static void main(String[] ar... 阅读全文
posted @ 2012-09-13 00:41 DrunBee 阅读(435) 评论(0) 推荐(0) 编辑
  2012年9月12日
摘要: 同【POJ】2409 Let it Bead只不过要求逆元。 1 #include<cstdio> 2 typedef long long LL; 3 #define MOD 1000000007 4 LL PowMod(LL a, LL b, LL c) { 5 LL ans; 6 a %= c; 7 for (ans = 1; b; b >>= 1) { 8 if (b & 1) { 9 ans *= a;10 ans %= c;11 }12 a *= a;13 ... 阅读全文
posted @ 2012-09-12 21:48 DrunBee 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题意:n*n个方块组成的正方形,着k种颜色,旋转翻转视为相同的方案,有多少种方案。Burnside定理,一共有8个置换,每个置换统计一下不变的着色数即可。import java.util.*;import java.math.*;public class Main { static int Count1(int n) { int ans; if (n % 2 == 0) ans = 0; else ans = 1; for (n--; n > 0; n -= 2) a... 阅读全文
posted @ 2012-09-12 21:28 DrunBee 阅读(670) 评论(0) 推荐(0) 编辑
摘要: 题意:不超过20个矩形,100000个询问,求矩形面积并。线段树复杂度比较靠谱吧。偷懒用容斥了。由于询问很多,容斥时候会重复用到某几个矩形的面积交,那么可以先预处理出来。询问的时候枚举子集肯定会TLE的,如果当前面积交为0,就不要再DFS下去了。这样就水过去了。 1 #include<cstdio> 2 #include<algorithm> 3 #define MAXN 20 4 #define MAX(a,b) ((a)>(b)?(a):(b)) 5 #define MIN(a,b) ((a)<(b)?(a):(b)) 6 #define oo 0x7F 阅读全文
posted @ 2012-09-12 18:17 DrunBee 阅读(348) 评论(0) 推荐(1) 编辑
  2012年9月11日
摘要: 题意:m种珠子串成由n个珠子构成的环,并且有一些限制,比如第i种与第j种不能相邻,旋转后相同算是同一种方案,求方案数。(m<=10,n<=10^9)如果没有限制条件,可以很容易用Burnside定理+容斥得到答案。如果只考虑限制,观察发现,m很小,n很大。那么可以通过快速幂得到从第i种到第j种,共有k个珠子的方案数。再回到Burnside定理,显然有n种置换,现在问题是如何求每种置换能保持不变的着色方案数:在【POJ】2154 Color已经推出,第i种置换(即旋转360/n*i度)会有GCD(n,i)种不同的颜色,循环节长度为GCD(n,i)。就可以用快速幂得到从第i种回到第i种 阅读全文
posted @ 2012-09-11 14:43 DrunBee 阅读(1143) 评论(0) 推荐(0) 编辑
  2012年9月10日
摘要: 题意:n个珠子的环,之多着n种颜色,考虑旋转,不考虑翻转。问模P的方案数。运用Burnside定理,有n个置换,每个置换使得着色不变的着色个数有GCD(n,i)个。GCD(n,i)个的原因:【POJ】2409 Let it Bead由于n达到十亿,显然不能枚举。但是可以发现,GCD(n,i)即n约数的个数很少。问题转化为1~n有多少个数,使得GCD(n,i)=k。其中k是n的约数。这个问题等价于与n/k互质的个数有多少,那么容斥就能搞定。由于有模P,Burnside定理最后要除以n,但是n与P不一定互质,可能没有逆元。观察到分子,不妨先都除以n,就避免了这个问题。 1 #include< 阅读全文
posted @ 2012-09-10 15:31 DrunBee 阅读(1431) 评论(0) 推荐(1) 编辑
摘要: 题意:用k种颜色对n个珠子构成的环上色,旋转翻转后相同的只算一种,求不等价的着色方案数。Burnside定理的应用:当n为奇数时,有n种翻转,每种翻转都是以一个顶点和该顶点对边的中点对称。有k^(n/2+1)*n种。当n为偶数时,有n种翻转,其中一半是以两个对应顶点,另一半是以两条对边对称。有k^(n/2+1)*n/2+k^(n/2)*n/2种。考虑旋转:枚举旋转角度360/n*i,(0<i<=n),也就是一个置换。经过该置换,颜色仍保持不变的着色方案有k^GCD(n,i)种。一个长度为n的环,每i个上同一种颜色,可以上多少种颜色。假设起点在x,则x,x+i,x+2*i,……,x+ 阅读全文
posted @ 2012-09-10 10:42 DrunBee 阅读(2035) 评论(0) 推荐(0) 编辑
  2012年9月7日
摘要: 题意:定义27的权为3,16的权为4(3^3=27,2^4=16)。求一个区间中所有数的权值之和。很容易知道[1,n]中有多少个数可以表示成k次方的形式,即n^(1/k)个。但是,一个数的平方包含了4 6 8 10……次方。如果知道至多只能表示成k次方的数有多少个,那么就能得到答案了。可以倒着容斥,如果正的推太复杂了。另外,pow精度不够,二分答案吧。 1 import java.util.*; 2 import java.math.*; 3 4 public class Main { 5 static int MAXN = 60; 6 7 static long Pow(... 阅读全文
posted @ 2012-09-07 16:32 DrunBee 阅读(449) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 20 下一页