- 博客(25)
- 收藏
- 关注
原创 线段树
#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1long long sum[MAX<<2],col[MAX<<2];void pushup(int rt)//本身不是动态的过程,在递归过程中向上更新{ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void pushdown(int rt,int m){
2016-04-29 21:44:51 237
原创 斐波那契数列
参见《具体数学第2版》244页。原谅我这个可耻的链接————————会整理一下在发出来相关性质:∑ni=0f(i)=f(n)∗f(n−1)\sum_{i=0}^nf(i)=f(n)*f(n-1);
2016-04-29 21:22:49 389
原创 二分法
int binSearch(int l,int r,int key){ int tl=l-1; int tr=r; while(tr-tl>1){ int mid=(tl+tr)/2; if(a[mid]>=k) tr=mid; else tl=mid; } ret
2016-04-29 20:08:05 342
原创 异或
不同为1,相同为零。 总结一些常用的性质吧,随时更新。 1. sis_i xor sjs_j = ai+1a_{i+1} xor…xor aja_j,s是a的前缀和。
2016-04-29 19:31:01 229
原创 鸽巢原理
简单形式: 如果n+1个物体被放进n个盒子,那么至少有一个盒子包含两个或更多的物体。加强形式: 令q1,q2,…qn为正整数。如果将q1+q2+…+qn-n+1个物体放入n个盒子内,那么或者第一个盒子至少含有q1个物体,或者第二个盒子至少含有q2个物体,…,或者第n个盒子含有qn个物体.应用: 在一个长度为n的序列a,存在子序列的和能被能整除。 中国剩余定理的存在性证明。
2016-04-27 10:25:36 555
原创 cf655A Buses Between Cities
/* ********************************Author : danmuCreated Time : 2016年04月25日 星期一 18时55分45秒File Name : a.cppVim Commandcopy -> yypaste -> p Pdel this line -> ddCtrl-Z -> u Ucop...
2016-04-26 19:06:19 808
原创 卢卡斯定理
Lucas定理:我们令n=sp+q , m=tp+r .(q ,r ≤p)那么:int Lucas (ll n , ll m , int p) { return m == 0 ? 1 : 1ll*comb (n%p , m%p , p) * Lucas (n/p , m/p , p) % p ;}//comb()函数中,因为q , r < p , 所以
2016-04-25 09:43:47 1221
原创 浙江省赛e题Modulo Query
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3940题目大意:对于0到m区间的数模Ai,模A2...模An,later有q个询问,问前面的问题等于yi的数有多少个(1<=i<=q)最后在按照题意求一下最终结果。解题思路:做的时候最关键的部分没有想明白,没有找到好的处理方法,还是经验少吧,题解...
2016-04-25 09:34:45 580
原创 hdu5673 Robot
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5673题目大意:一个机器人,可以向左,向右或停在当前位置每个动作都话费n个时间,但不能移动到原点左面,问n个时间后仍在原点位置有多少种走法。解题思路:开始乱搞了一通,后来看的题解,枚举robot向左走的步数,同时它向右走的步数是一样的因为要回到原点,所以对于每一种情况,向左走i步,有Cn2i...
2016-04-24 22:09:03 793
原创 catalan数
1.h(n)=h(n-1)*(4*n-2)/(n+1);2.h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2);3.h(n)=C(2n,n)/(n+1) (n=0,1,2,...);4.h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)
2016-04-24 21:51:43 222
原创 逆元
1.线性求所言逆元LL inv[MAX];inv[1]=1;for(int i=2;i<=MAX;++i) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
2016-04-24 21:45:33 243
原创 素数
6N+1法int prime[MAX],cnt;bool isPrime(int k){ if(k==2) return true; if(!(k&1)) return false; for(int i=3;i*i<=k;i+=2) if(k%i==0) return false; retur
2016-04-21 16:56:18 274
转载 莫比乌斯反演
定理:F(n)和f(n)是定义在非负整数集合上的两个函数,并且满足条件F(n)=∑d|nf(d)F(n)=\sum_{d|n}f(d),那么我们得到结论f(n)=∑d|nμ(d)F(n/d)f(n)=\sum_{d|n}\mu(d)F(n/d)。 在上面的公式中有一个函数μ(d)\mu(d),它的定义如下: (1)若d=1,那么μ(d)=1\mu(d)=1. (2)若d=p1p
2016-04-19 17:27:21 237
原创 南京理工大学第八届程序设计大赛triple
题目链接:https://icpc.njust.edu.cn/Contest/749/D/题目大意:在一定范围内找出三个最大公约数为m且各不相同的数,问有多少中情况。解题思路:刚开始的时侯用容斥写,因为对于这个题而言质因子的分布在1到10的5次方,所以就有大概9千多个质数,而我写的容斥是n^2的,所以就超时,所以这题不能用质因子去容斥,而直接用n的因子,时间复杂度更低。所以n^2的容斥对...
2016-04-19 16:13:06 785
原创 南京理工大学第八届程序设计大赛count_prime
题目链接:https://icpc.njust.edu.cn/Contest/749/C题目大意:在一个区间内找到与某个数互质的个数。解题思路:容斥原理,去掉所有与它不互质的数即为所求。默比乌斯反演也能写,如果n能整除m,F(m)=b/m,否则F(m)=0。不过就显得有点笨重了,因为n和a,b都比较大,如果后台数据量大的话,我感觉会超时,好在这题两种方法能过。容斥原理:<...
2016-04-19 11:50:30 497
原创 容斥原理
//递归写法LL sum;void dfs(int i,int nu,int x,int mu,LL b){ //printf("%d %d %d %d %lld\n",i,nu,x,mu,b); if(nu==x){ sum+=b/mu; return; } if(i==tmpCnt) return; dfs(i+1,nu+1,x,mu*tmpPrime[i],b);
2016-04-19 09:18:35 315
原创 gcdDepth
题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1054。题目大意 :在(y0,y1)的范围内找出有多少个数满足gcd(x,y)的深度(递归调用的次数)等于d。解题思路:这题刚那拿到第一反应是拉梅定理,找了好久没找到合适的计算方法,经同学提醒发现随便确定一个x,在模拟一下这个过程就能找到规律,当y大于x后gcd(x,y)的深度就...
2016-04-19 09:09:30 332
转载 数据范围
unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigned long...
2016-04-16 20:26:12 370
原创 扩展GCD
a*x+b*y=d,d=gcd(a,b).模板代码:void exgcd(int a,int b,int& d,int& x,int& y){ if(b==0){ d=a; x=1; y=0; } else{ exgcd(b,a%b,d,y,x); y-=a/b*x; }}-----取自小白算法推导及证明:详见算导(第二版)528;具体数学
2016-04-07 21:40:43 326
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人