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 阅读(460) 评论(0) 推荐(0)
摘要: 题意:有3*n个人,分成n组,每组三个人。给出k个三元组,这三个人不可组队,问最后可以组队的总方案数。当k=0时,有(C[3*n][3]*C[3*n-3][3]*……*C[3][3])/n!种方案,展开以后可以得到dp[n]=(3*n)!/n!/6^n。显然可以写成递推式:dp[n]=dp[n-1]*(3*n-1)*(3*n-2)/2。那么容斥一下,答案=总方案数-至少含一个禁止组合的+至少含两个禁止组合的-……二进制暴力TLE了。DFS的话会有很多剪枝,当前几个已经出现冲突,自然不会再往后面搜了。 1 import java.util.*; 2 import java.math.*; 3 . 阅读全文
posted @ 2012-09-07 12:22 DrunBee 阅读(337) 评论(0) 推荐(0)
摘要: 题意:有n张卡片,每张上的值可以相同,每张上的值不超过m,第n+1张为m。设k[i]为任意整数,a[i]为第i张卡片的值,那么问∑k[i]*a[i]=1的a[i]有多少种(0<=i<=n)。有式子可得n+1个数线性无关,即最大公约数必然等于1。总数是m^n,只要求得最大公约数不等于1的种数,就能得到答案。先对m分解素因子,例如12,有2,3。是2的倍数的有6个:2 4 8 6 10 12。是3的倍数的有4个:3 6 9 12。是6的倍数的有2个:6 12。所以与12不互质的有6+4-2=8个。import java.util.*;import java.math.*;public 阅读全文
posted @ 2012-09-07 10:04 DrunBee 阅读(546) 评论(0) 推荐(0)
摘要: 题意:给定一个区间,求不能表示成k*x*x*x(x>1)的个数。区间转化为两个1~n,可以先求出能够表示成k*x*x*x(x>1)的个数。不妨假设x是某个素数,1~n中有n/(x^3)个值,x^3,2*x^3,……,n/(x^3)*x^3。假设t不是素数,可以表示t=k*x。那么t^3=(k*x)^3=k^3*x^3。显然会与x统计重复。所以,可以枚举素数的三次方,得到一个答案。但是,6^3=(2^3)*(3^3),被计算了两次。因此,需要用到容斥原理。 1 #include<cstdio> 2 #include<cstring> 3 #include< 阅读全文
posted @ 2012-09-07 09:11 DrunBee 阅读(319) 评论(0) 推荐(0)