随笔分类 -  数学

摘要:题目:http://code.bupt.edu.cn/problem/p/84/Given an array withNintegers where all elements appear three times except for one. Find out the one which appears only once.N(1≤N≤10^5) All elements are ranged in[0,2^63−1];好吧。以前看过每个数都出现两次,只有一个出现一次,找这个数的题目。这个还真新颖。。。数据卡的O(nlogn)一丁点就不行,甚至O(N*64)都不行。。。无语了。。。在quor 阅读全文
posted @ 2014-03-28 20:47 AC_Von 阅读(1246) 评论(1) 推荐(0)
摘要:很明显的Polya计数法,但是有一个纠结的地方就是这个k rotation不是给定的,而是然自己求出来的。因为数据比较大,暴力找的话肯定TLE,开始没想到怎么做。后来看到有人说用kmp,好吧,我又水 了。。。。。做法: 定义数组vv[],vv[] = v[] + v[], 就是把两个v[]数组接起来作为匹配串,原串v[]作为模式串。O(n)跑一遍kmp,看在哪些位置正好匹配。然后polya计数就行。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#inclu 阅读全文
posted @ 2013-06-04 16:51 AC_Von 阅读(357) 评论(0) 推荐(0)
摘要:欧拉定理(又称费马-欧拉定理):已知a和n为正整数,并且a和p互素,则a^phi(n) ≡1(mod n)。证明: 设集合Z = {X1, X2, X3, .... , Xphi(n)},其中Xi (i = 1, 2, .. phi(n))表示第i个不大于n与n互质的数。 考虑集合S = {a*X1(mod n), a*X2(mod n), ... ,a*Xphi(n) (mod n) },则集合Z = S; 1) 因为a和n互质,Xi和n也互质,所以a*Xi 也与n互质。所以对任意一个Xi,a*Xi (mod n)一定是Z里面的元素; 2)对于任意Xi, Xj, 如果Xi != Xj... 阅读全文
posted @ 2013-06-04 16:42 AC_Von 阅读(2455) 评论(0) 推荐(0)
摘要:From:http://hi.baidu.com/lydrainbowcat/item/f16e64103f8c5c088fbde44cPOJ【数论/组合/博弈论】题目列表原来的列表比较水,今天换了一个难一些的列表,重新开始做~红色的代表已经AC过,蓝色的代表做了但是还没过。这句话貌似在我空间里的每份列表里都有额。博弈论POJ 2234 Matches GamePOJ 2975 NimPOJ 2505 A multiplication gamePOJ 1067 取石子游戏 威佐夫博弈,奇异局势(必败局)为ak = [k*(1 + sqrt(5))/2], bk = ak + k;POJ 24. 阅读全文
posted @ 2013-03-10 19:49 AC_Von 阅读(3331) 评论(1) 推荐(1)
摘要:欧拉函数:用来求1...n-1范围内与n互质的数的个数 phi(n) = n*(1 - 1/p1)*(1 - 1/p2)*...*(1 - 1/pk) (p1, p2, ... pk为n的质因子) 因为 n = p1q1 * p2q2 * ... * pkqk 带入得:phi(n) = (p1 - 1)*p1q1-1 * (p2 - 1)*p2q2-1 * ... * (pk - 1)*pkqk-1; 代码: int eular(int n) { int i, res = 1; for(i = 2; i*i <= n; ++i) { if(n%i == ... 阅读全文
posted @ 2013-01-23 20:54 AC_Von 阅读(403) 评论(0) 推荐(0)
摘要:关于群、置换、置换群、Burnside定理、Polya定理的详细内容是看得组合数学课件,地址:http://ishare.iask.sina.com.cn/download/explain.php?fileid=15008967练习: poj2409 题意:给一个包含s个珠子的项链,用c种颜色对其染色,问存在多少个不同的等价类。 解:项链可以进行旋转和翻转; 翻转:如果s是奇数,则存在s种置换,每种置换包含s/2+1个循环。 如果s是偶数,存在s/2种以边的中点为中心轴的翻转,每种包含s/2个循环,另外还存在s/2种以点为中心的翻转,每种包含s/2+1个循环; 旋转:旋转i... 阅读全文
posted @ 2013-01-23 20:49 AC_Von 阅读(2296) 评论(0) 推荐(0)
摘要:数学组合数学poj2888,poj2154博奕论poj3317,poj1085组合数学POJ 2154 && POJ 2888详见:Polya计数法http://www.cnblogs.com/vongang/archive/2013/01/23/2873780.html博奕论POJ 1085 最大最小搜索,alpha beta 剪枝:http://www.cnblogs.com/vongang/archive/2013/01/25/2877208.html 阅读全文
posted @ 2013-01-23 08:47 AC_Von 阅读(314) 评论(0) 推荐(0)
摘要:对于C(n, m) mod p。这里的n,m,p(p为素数)都很大的情况。就不能再用C(n, m) = C(n - 1,m) + C(n - 1, m - 1)的公式递推了。这里用到Lusac定理For non-negative integersmandnand a primep, the followingcongruence relationholds:whereandare the basepexpansions ofmandnrespectively.对于单独的C(ni, mi) mod p,已知C(n, m) mod p = n!/(m!(n - m)!) mod p。显然除法取模, 阅读全文
posted @ 2012-12-02 14:03 AC_Von 阅读(9750) 评论(0) 推荐(2)
摘要:/*记得以前做cf就吃过这上面的亏,今天队里的比赛又挂了好几次才推 出来。。。晚上整理了一下,分别写了写>= , > , <= , <这四种情况。(== 就 不用写了),测试数据包含最小值和最大值的测试,有些情况结果是非法的,输出为-1 或 n*/ //#pragma comment(linker, 阅读全文
posted @ 2012-11-17 20:22 AC_Von 阅读(402) 评论(0) 推荐(0)
摘要:HNOI的题。。。蛋疼的没有想到,看了discuss。。。 已知N+1个数,x1, x2, .. xn, m;使得gcd(x1, x2, ..., xn) = 1(mod m)。也就是说gcd(x1, x2,..., xn, m) = 1需要找x1, x2, ... ,xn这样的序列多少个。其实就是找到与m互素的数构造这个集合就可以。。。首先对m进行分解质因子,可以用容斥原理找到与m不互素的数构成的集合,用m^n减掉就可以了;ps:貌似这题不用高精度。//#pragma comment(linker,"/STACK:327680000,327680000")#include 阅读全文
posted @ 2012-11-03 11:36 AC_Von 阅读(446) 评论(0) 推荐(0)
摘要:题目是给出m,k。找到跟第k个跟m互素的数是多少。 构造肯定不行,再加上数据范围,只能二分。思路是二分枚举[1,2^64]范围内所有的数x,找到1到x范围内与m不互素的数的个数y(用容斥原理)。然后用x - y,如果等于k就是结果。找到1到x范围内与m不互素的数的个数y:这个过程可以先把m分解质因子,记录m所有的质因子。f[i]表示含有i个质因子的数的个数。ans = m - f(1) + f(2) - f(3) ....ps:这里二分要找满足 == k最左边的数,推了半天发现把二分写错了。。。T_T//#pragma comment(linker,"/STACK:327680000 阅读全文
posted @ 2012-11-03 11:28 AC_Von 阅读(717) 评论(0) 推荐(0)
摘要:感觉这个题很不错,至少开始真的没想道可以用抽屉原理推出一个结论,然后把这题秒掉。。。。已知有n个元素,sum[i]表示从1到i所有数的和。。。sum[i]%n可以得到一个剩余系,如果出现0,那么结果就找到了。如果不出现0,就可以用抽屉原理了。因为剩余系里只有[1,n-1]这些数,但是sum[i]%n会得到n个结果。n-1个抽屉放n个物品,必定有一个抽屉放的物品数大于等于2。也就是必定存在sum[j]%n == sum[i]%n。我们假设sum[i] > sum[j],所以有(sum[i] - sum[j])%n = 0; 从而得到结果。构造大概有O(n)的复杂度吧,开始想写O(n^2)。 阅读全文
posted @ 2012-11-03 11:20 AC_Von 阅读(395) 评论(0) 推荐(0)
摘要:http://www.cppblog.com/vici/archive/2011/09/05/155103.html容斥原理(翻译)前言:这篇文章发表于http://e-maxx.ru/algo/inclusion_exclusion_principle,原文是俄语的。由于文章确实很实用,而且鉴于国内俄文资料翻译的匮乏,我下决心将其翻译之。由于俄语对我来说如同乱码,而用Google直接翻译中文的话又变得面目全非,所以只能先用Google翻译成英语,再反复读,慢慢理解英语的意思,实在是弄得我头昏脑胀。因此在理解文章意思然后翻译成中文的时候,中文都不知道如何表述了。而又由于我对容斥原理知识的匮乏, 阅读全文
posted @ 2012-11-01 21:28 AC_Von 阅读(543) 评论(0) 推荐(0)
摘要:wikipedia上的解释和证明:http://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithmTheTonelli–Shanksalgorithm(referred to by Shanks as the RESSOL algorithm) is used withinmodular arithmeticto solve a congruence of the formwherenis aquadratic residue(modp), andpis an oddprime.Tonelli–Shanks cannot be used 阅读全文
posted @ 2012-11-01 16:30 AC_Von 阅读(3032) 评论(0) 推荐(0)
摘要:二分法只适用与线性函数,当函数脱离线性而呈现凸性或者凹性的时候,三分是很有必要的。三分过程如下图:凸函数:凹函数:实现方法:double Calc(double p) { /*...*/}double Solve(double MIN, double MAX) { double Left, Right; double mid, midmid; double mid_area = 0, midmid_area = 0; //*** Left = MIN; Right = MAX; while (Left + eps < Right) { mi... 阅读全文
posted @ 2012-10-30 11:23 AC_Von 阅读(1513) 评论(0) 推荐(0)
摘要:第一次做训练计划的时候没有做出来。。。回头又看了看, 就是个高中物理题。已知周期,求多长时间运行到一条线上。已知每个行星的角速度为vi = 2*π/Ti,选择一个行星T0作为坐标系,则其他行星的相对速度为vi' = (T0 - Ti)*2π/(T0*Ti)。则角度绕过半个圆周的时间为Ti' =π/vi' = (T0*Ti)/((T0 - Ti)*2)这样就是求所有Ti‘的分子的LCM和所有Ti’分母的GCD。ps:注意两点,1、去掉周期相同的,2、用BigInteger。View Code import java.util.*;import java.io.*;impo 阅读全文
posted @ 2012-10-30 09:26 AC_Von 阅读(916) 评论(0) 推荐(0)
摘要:题意是:给一些坐标点,如果两点之间的距离小于R,并且两点之间没有其他点,则这两个点保持连通,这样构成了一个图。问这个图中生成树的个数。因为数据量并不大,O(N^3)的建图没有问题。建好图以后就可以用kirchhoff矩阵计算生成树的个数,之所以写这道题的解题报告是因为在高斯消元解kirchhoff矩阵时,需要用到逆元。(a/b)% mod,如果a,b的范围很大,结果会有很大的误差,这里可以转换一下 b*x = 1(% mod)则x为b的逆元 (a/b)%mod = (a*x)%mod求逆元的过程就是解线性同余方程b*x ≡1(% mod)。详见代码:/*高斯消元的整个过程中不能出现负数*... 阅读全文
posted @ 2012-10-08 21:21 AC_Von 阅读(706) 评论(0) 推荐(0)
摘要:矩阵快速幂。最外层的取模是1e9+7,第二层的取模 L1 = (1e9+7的循环节),第三层的取模是 L2 = (L1的循环节)暴力找出L2, L1, 然后矩阵快速幂即可。。。View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include <string>#include <set>#include <fun 阅读全文
posted @ 2012-09-16 20:02 AC_Von 阅读(1144) 评论(0) 推荐(0)
摘要:题目:a1*a2*...*an=b1*b2*…*bn,(ai > 1) 给出b序列,求a序列有多少种。先不考虑ai > 1这个条件。可以通过费解b_i的质因子得到如下公式:∏b_i =∏(p_i^k_i);pi是∏bi 的某个质因子。因为a_i 共有n个,所以把每个p_i填到这n个空位置里边去。对于p_i,有C(k_i + n - 1, n - 1);证明见:http://hi.baidu.com/pp_5/blog/item/73798043ec77781f72f05d51.html/cmtid/6aff22f08c5c85a1a50f523d显然,所有的p[]的值为∏C(k_i 阅读全文
posted @ 2012-08-24 16:29 AC_Von 阅读(372) 评论(0) 推荐(0)
摘要:For non-negative integersmandnand a primep, the followingcongruence relationholds:whereandare the basepexpansions ofmandnrespectively. 阅读全文
posted @ 2012-08-08 22:09 AC_Von 阅读(308) 评论(0) 推荐(0)