数学
cstirling
这个作者很懒,什么都没留下…
展开
-
UVA1386 快速矩阵幂 O(n²logk)
点击打开链接友矩阵为循环矩阵,储存和计算矩阵乘法时只算出第一行#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #include #include #include原创 2016-08-17 18:55:19 · 355 阅读 · 0 评论 -
CodeForces 719E Sasha and Array 【线段树】【快速矩阵幂】
题目:点击打开链接题意:给出有n个元素的数列ai(1分析:容易想到用快速矩阵幂求斐波那契数列,同时用线段树储存和矩阵以及lazy矩阵,如果lazy标记为指数的话每次更新都要用一遍快速矩阵幂,就会超时。因为矩阵乘法满足分配律,且区间[l,r]加上x可以表示为乘上x次q矩阵,所以线段树维护矩阵之和,同时每次更新的时候,x可以先用快速矩阵幂,求出变换x次后的矩阵,然后在线段树中更新,即和矩阵和l原创 2016-11-17 20:22:44 · 351 阅读 · 0 评论 -
URAL 1091 Tmutarakan Exams 【容斥】【组合数】
题目:点击打开链接题意:在不大于s的所有数中,找出k个gcd不为1的数,求组数。分析:因为k>=2,所以必定选择两个数不互质,最大的质因数不超过50/2=25,因此枚举不超过25的质因数,对于每个质因数x,与之不互质的数共有s/x,而要从这s/x个数中选出k个数,用到组合数公式,组合数公式可以通过递推预处理。但是这样取会有重复,比如若s=20,k=3,x=2时,不互质的数有2,4,6,8,原创 2016-11-15 19:40:32 · 294 阅读 · 0 评论 -
浙江理工大学zstu2016新生赛题解
A:Save the Princess题目:点击打开链接题意:n个人横向排好队,其中左数第k个是公主,LYF和BH分别可以杀掉队列最左边的或者最右边的人,直到某个人拯救公主,两个人都会选择最佳杀人方案,LYF先杀,问谁能拯救公主。分析:当公主在队列两端时,LYF先行动,所以LYF是赢家,其他情况时,当某个人正好杀掉与公主相邻的人时,另一个人肯定是赢家,所以不能先杀公主与公主相邻的人,因原创 2016-11-21 17:37:05 · 5506 阅读 · 8 评论 -
自适应辛普森模板
//求椭圆与两竖线相交形成的面积#include#include#includeusing namespace std;double aa,bb,l,r;double F(double x){ return sqrt(bb*bb-x*x*bb*bb/(aa*aa));//F(x)的公式}double Simpson(double a,double b){ dou原创 2017-03-23 17:54:27 · 960 阅读 · 0 评论 -
组合数模板
n,m大,MOD小#include using namespace std;#define ll long longconst int N=1000100;const int MOD=99991;ll f[N];ll Fp(ll a,ll n){ ll ans=1; while(n) { if(n&1) ans=(ans*a)%MOD;原创 2017-03-22 14:03:26 · 326 阅读 · 0 评论 -
中国剩余定理模板
ll m[N],p[N];//p是质数,m是余数ll Exgcd(ll a,ll b,ll &x,ll &y){ if(b==0) { x=1; y=0; return a; } ll x1,y1; ll d=Exgcd(b,a%b,x1,y1); x=y1; y=x1-a/b*y1;原创 2017-07-25 08:43:26 · 347 阅读 · 0 评论 -
各种幂模板
快速幂ll powermod(ll a,ll n){ ll ans=1; a%=MOD; while(n) { if(n&1) ans=ans*a%MOD; a=a*a%MOD; n>>=1; } return ans;}快速矩阵幂const ll MOD=1e9+7;cons原创 2016-08-16 17:49:54 · 301 阅读 · 0 评论 -
高斯消元模板
//f(n)=f(n-1)*a+f(n-2)*b+f(n-3)*c+f(n-4)*d情况下的高斯消元const int Matsize=5;double mat[Matsize][Matsize]={ 95,36,11,5,281, 281,95,36,11,781, 781,281,95,36,2245, 2245,781,281,95,6336};vo原创 2017-09-02 13:39:06 · 299 阅读 · 0 评论 -
POJ 1091 跳蚤 【容斥】【质因数分解】
题目:点击打开链接题意:中文题分析:题意可转化为,有n个数,每个数都小于等于m且允许重复,gcd(所有数)==1,求这n个数的所有满足条件的排列组合。求出gcd==1的个数难易实现,因此可以先求出gcd!=1的个数,即所有的数都不互质,易得这些数不与m互质,即可以由m的质因数推导出来,把m的质因数保存。取出k个质因数,相乘的数也是不与m互质,然后在1~m内,一共有m/该数 个数于该数不互质原创 2016-11-13 17:47:56 · 342 阅读 · 0 评论 -
HDU 1695 GCD 【容斥】【质因数分解】【欧拉函数】
题目:点击打开链接题意:给定区间[a,b]和[c,d]和k,求出x∈[a,b],y∈[c,d],使得gcd(x,y)==k的个数,给定a=c=1。分析:对于满足gcd(x,y)==k的x,y的值,都有x,y是k的倍数,且x,y互质。因此可以将b,d各除以k,得到的新的b,d中找出互质的对数即为答案,由于b,d的大小关系可能不同,为统一计算将交换为b#pragma comment(lin原创 2016-11-13 00:57:52 · 269 阅读 · 0 评论 -
HUST 1214 Cubic-free numbers II 【容斥】
题目:点击打开链接题意:一种数它不能被这样表示n=x*x*x*k(x不为1),求出[l,r)区间内有多少这样的数,区间在64位整数内。分析:显然先求出1~n中有多少这种数,由唯一分解定理得x必定为质因数,所以先筛出小于(1#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #includ原创 2016-11-16 01:05:46 · 224 阅读 · 0 评论 -
Burnside引理和Polya定理
首先谈一下我对置换群的理解(PS:写给没学过抽象代数的我们……):置换群就是一些置换的集合,例如 (12233144)是一个置换,但不是一个置换群,置换只与每列的相对字符有关,与列顺序天关,比如(12233144)=(23123144)(3241)在经过(12233144)置换之后就成了(4321)。 群还要求一些奇特的性转载 2016-11-07 16:43:09 · 1017 阅读 · 0 评论 -
CodeForces 474F Ant colony 【线段树】【gcd】【二分】
题目:点击打开链接题意:给定一个数列,求出区间长度减去询问区间内能被区间内所有其他的数整除的数出现的个数的值。思路:将原数列存进一个结构体,先按照数列的值从小到大排序,相同时按照数列编号从小到大排序,因为a%b==0等价为gcd(a,b)==b,所以我们可以通过线段树或者ST表预处理出所有区间内的gcd值,然后查找到对应区间内的gcd值,就是该区间内能被区间内所有其他的数整除的数,然后通过原创 2016-10-13 19:24:49 · 346 阅读 · 0 评论 -
快速求原根
51Nod 1135-原根 `#include include include include include include include include include include include define PR pairdefine MP make_pairdefine fi firstdefine se seconddefine lson l,m,rt<<1define rs原创 2016-08-06 17:40:28 · 1359 阅读 · 0 评论 -
ACM数学(转)
从放暑假前周sir给我讲了一个用polya计数法和burnside定理做的题目(pku2409)后,突然觉得组合数学挺有意思,然后从那时起到现在几乎都在做这类的题目。 做到现在感觉这类题目的一些基本知识点都差不多有所了解了,水题也刷了不少,但还有很多难题自己实在是做不动,所以准备把这类题目先放一放,然后把前段时间做的水题整理一下(供以后的初学者参考,大牛就不要看了哈,都是水题)。剩下的比较难转载 2016-11-07 16:55:02 · 416 阅读 · 0 评论 -
HDU 2204 Eddy's爱好 【容斥】
题目:点击打开链接题意:中文题分析:对于所有满足m^k1e18,所以Ai∩Aj∩Ak不超过60即可,因为2*3*5*7刚好大于60,所以最多有三个集合交。本题还要考虑精度。#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #i原创 2016-11-08 23:26:54 · 217 阅读 · 0 评论 -
HDU 1796 How many integers can you find 【容斥】
题目:点击打开链接题意:给出n和集合m,求出所有满足的x,x分析:考虑到容斥关系,先求出能被任意一个数整除的所有数的数量,减去能被任意两个数整除的所有数的数量,再加上能被任意三个数整除的所有数的数量...即可。注意能被两数整除的数也就是能整除它们最小公倍数的数,集合m中的数可能为0。 #pragma comment(linker, "/STACK:1024000000,10240000原创 2016-11-10 09:25:27 · 209 阅读 · 0 评论 -
HDU 3208 Integer’s Power 【容斥】
题目:点击打开链接题意:给定一个区间,求出区间内所有数的最大的指数和。分析:可以先求出1~n中有的区间指数和,再取端点相减。考虑到最大的指数不超过60(2^60>1e18),因此可以枚举所有指数,根据指数k对n开根,因为用a=pow(n,i)可能会产生不超过1的精度误差,所以可以每次判断a-1,a和a+1哪个值的k次方不超过n且更接近,并且a+1的k次方可能会超过long long表示的最原创 2016-11-11 11:50:00 · 448 阅读 · 0 评论 -
快速傅里叶变换(FFT)和数论变换(NTT)模板
#include#define ll long long#define dob complexconst int N=120010;const double pi=acos(-1.0);using namespace std;inline int rd(){ int x=0,res=1;char ch=getchar(); while(ch>'9'||ch<'0'){原创 2016-09-04 15:39:21 · 1653 阅读 · 0 评论