上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 25 下一页

bzoj 1064 图论

摘要: 我们根据能否看见建图,有向图边权设成1,然后我们转成无向图,对于每条有向边连一条反边,边权是-1,然后从每个块中任意一个点开始dfs,每个点有一个值,经过一条边到另一个点之后,用原来的点值和边权更新新的点的点值,那么如果我们访问到了一个原来已经走过的点,那么我们找到了一个环(可能是非环,就是一个点出两条有向边,然后又交在一点了),由于数据是合法的,所以这样的非环的现在应该更新成的点值和原有的点值相等,如果不相等的话,取差值的绝对值,就是这个环的长度。那么我们对于所有块,每个块的环的长度都是种类数的倍数,所以取gcd就好了还有一种情况就是没有环,全都是以链的形式存在的,对于这种形式,我们每个块染 阅读全文
posted @ 2013-12-24 23:17 BLADEVIL 阅读(425) 评论(0) 推荐(0) 编辑

bzoj 1066 最大流

摘要: 将每个石柱拆成两个点,分别是进入的和出去的,两个点之间连石柱的高度然后每个出去的点连别的石柱的进去的点,源点连所有蜥蜴所在柱子,每个能跳出去的连汇点,然后最大流就行了/**************************************************************Problem: 1066User: BLADEVILLanguage: PascalResult: AcceptedTime:48 msMemory:2748 kb****************************************************************///By B 阅读全文
posted @ 2013-12-24 14:52 BLADEVIL 阅读(432) 评论(0) 推荐(0) 编辑

bzoj 2245 费用流

摘要: 比较裸源点连人,每个人连自己的工作,工作连汇,然后因为人的费用是分度的,且是随工作数非降的,所以我们拆边,源点连到每个人s+1条边容量是每段的件数,费用是愤怒/**************************************************************Problem: 2245User: BLADEVILLanguage: PascalResult: AcceptedTime:1532 msMemory:8048 kb****************************************************************///By BLA 阅读全文
posted @ 2013-12-24 11:09 BLADEVIL 阅读(267) 评论(0) 推荐(0) 编辑

bzoj 2705 数学 欧拉函数

摘要: 首先因为N很大,我们几乎不能筛任何东西那么考虑设s(p)为 gcd(i,n)=p 的个数,显然p|n的时候才有意义因为i与n的gcd肯定是n的因数,所以那么可得ans=Σ(p*s(p))那么对于s(p),我们有gcd(i,n)=p即gcd(i/p,n/p)=1,也即phi(n/p)所以枚举因数求phi就好了/**************************************************************Problem: 2705User: BLADEVILLanguage: PascalResult: AcceptedTime:12 msMemory:228 kb* 阅读全文
posted @ 2013-12-23 20:41 BLADEVIL 阅读(232) 评论(0) 推荐(0) 编辑

bzoj 2301 莫比乌斯反演

摘要: 类似于2820,贴上内个题的题解吧 http://www.cnblogs.com/BLADEVIL/p/3486834.html另:强制转int64比普通int64运算快好多,本来TLE了,改了就A了。。。/**************************************************************Problem: 2301User: BLADEVILLanguage: PascalResult: AcceptedTime:34964 msMemory:1204 kb************************************************ 阅读全文
posted @ 2013-12-23 18:46 BLADEVIL 阅读(389) 评论(0) 推荐(0) 编辑

bzoj 2005 NOI 2010 能量采集

摘要: 我们发现对于一个点(x,y),与(0,0)连线上的点数是gcd(x,y)-1那么这个点的答案就是2*gcd(x,y)-1,那么最后的答案就是所有点的gcd值*2-n*m,那么问题转化成了求每个点的gcd值的Σ也即:Σim then swap(n,m);phi[1]:=1;for i:=2 to n dobeginif mindiv[i]=0 thenbegininc(prime[0]);prime[prime[0]]:=i;mindiv[i]:=i;phi[i]:=i-1;end;for j:=1 to prime[0] dobeginif i*prime[j]>m then break 阅读全文
posted @ 2013-12-23 16:44 BLADEVIL 阅读(372) 评论(0) 推荐(0) 编辑

bzoj 2820 mobius反演

摘要: 学了一晚上mobius,终于A了一道了。。。。假设枚举到i,质数枚举到p(程序里的prime[j]),要更新A=i*p的信息。1.p|i 这时A的素数分解式中,p这一项的次数>=2。考虑g(A)的求和式:如果枚举的质数p'不等于p,A/p'就也会有p这一项,次数>=2,这时候miu(A/p')=0如果枚举的质数p'=p,A/p=i,这一项就是miu(i)因此g(A)=miu(i)2.p!|i(即i%p!=0)这时候A比i多一个质因子p,对miu(i)分情况讨论。2.1miu(i)==0(即i有大于1次的项)这时A除去任何一个p'都会留下i的那 阅读全文
posted @ 2013-12-23 07:57 BLADEVIL 阅读(510) 评论(0) 推荐(0) 编辑

bzoj 2818 欧拉函数

摘要: 设w[i]为1-i中gcd(i,j)=1的数对数,那么w[i]:=2*Σphi[i]+1,欧拉函数线性生成就行了然后ans=Σw[n/prime[i]]是比较显然的事。。/**************************************************************Problem: 2818User: BLADEVILLanguage: PascalResult: AcceptedTime:2672 msMemory:156476 kb****************************************************************/ 阅读全文
posted @ 2013-12-23 07:16 BLADEVIL 阅读(418) 评论(0) 推荐(0) 编辑

bzoj 2659 几何

摘要: 首先考虑(0, 0)到(p, q)这条直线。y=q/p*x。sum{k=0to(p-1)/2}[q/p*k] 就是直线下方的点数。sum{k=0to(q-1)/2}[p/q*k] 就是直线左方的点数。如果gcd(p,q)=1的话,这条直线上没有整点,所以不会重复计算。相等的时候的数恰好是p*q矩形的1/4。答案当然是(p-1)*(q-1)/4。//转自叉姐的话。。/**************************************************************Problem: 2659User: BLADEVILLanguage: PascalResult: Acc 阅读全文
posted @ 2013-12-22 11:20 BLADEVIL 阅读(297) 评论(0) 推荐(0) 编辑

bzoj 2142 国家集训队试题 礼物

摘要: 问题转化成求C(N,M) mod P p为非素数,那么我们可以将P分解质因数,也就是 π pi^ci的形式,因为这些pi^ci是互质的,所以我们可以用crt将他们合并那么问题就转化成了快速求C(N,M) mod pi^ci那么我们看下c的形式,为N!/(M!(N-M)!) mod pi^ci因为mod的数不是质数,所以分母没法正常求逆元,那么我们可以将分子分母中的pi的值挑出,那么我们先求N!,可以发现,N!mod pi^ci可以分段,每段是pi^ci长,这一段的值是0--(pi^ci-1),那么因为我们需要将N!中pi|I的挑出来剩下一些数,那就是好几段这个数相乘,用快速幂解决就行了,设cn 阅读全文
posted @ 2013-12-22 10:12 BLADEVIL 阅读(881) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 25 下一页