• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
L&King
有何不可!
   首页    新随笔    联系   管理    订阅  订阅
07 2016 档案
BZOJ 2186 [Sdoi2008]沙拉公主的困惑 【逆元】

摘要:题意:求中互质的数的个数,其中。 分析:因为,所以,我们很容易知道如下结论 对于两个正整数和,如果是的倍数,那么中与互素的数的个数为 本结论是很好证明的,因为中与互素的个数为,又知道,所以 结论成立。那么对于本题,答案就是 事实上只要把素数的逆元用exgcd求一求就好,其余并未用到 逆元递推法: 扩 阅读全文
posted @ 2016-07-31 17:14 L&King 阅读(239) 评论(0) 推荐(0)
POJ 1845 Sumdiv 【逆元】

摘要:题意:求A^B的所有因子之和 很容易知道,先把分解得到,那么得到,那么 的所有因子和的表达式如下 第一种做法是分治求等比数列的和 用递归二分求等比数列1+pi+pi^2+pi^3+...+pi^n: (1)若n为奇数,一共有偶数项,则: 1 + p + p^2 + p^3 +...+ p^n = ( 阅读全文
posted @ 2016-07-31 15:31 L&King 阅读(208) 评论(0) 推荐(0)
POJ 2891 Strange Way to Express Integers【扩展欧几里德】【模线性方程组】

摘要:求解方程组 X%m1=r1 X%m2=r2 .... X%mn=rn 首先看下两个式子的情况 X%m1=r1 X%m2=r2 联立可得 m1*x+m2*y=r2-r1 用ex_gcd求得一个特解x' 得到X=x'*m1+r2 X的通解X'=X+k*LCM(m1,m2) 上式可化为:X'%LCM(m1 阅读全文
posted @ 2016-07-30 15:28 L&King 阅读(1261) 评论(0) 推荐(0)
HDU 1576 A/B【扩展欧几里德】

摘要:设A/B=x,则A=Bx n=A%9973=A-9973*y=Bx-9973*y 用扩展欧几里德求解 阅读全文
posted @ 2016-07-30 12:55 L&King 阅读(142) 评论(0) 推荐(0)
POJ 2142 The Balance【扩展欧几里德】

摘要:题意:有两种类型的砝码,每种的砝码质量a和b给你,现在要求称出质量为c的物品,要求a的数量x和b的数量y最小,以及x+y的值最小。 用扩展欧几里德求ax+by=c,求出ax+by=1的一组通解,求出当x取最小合法正整数解时y的取值,当y小于0时,说明应该放在a的另一边,变为正值。同理当y取最小时,可 阅读全文
posted @ 2016-07-29 20:48 L&King 阅读(204) 评论(0) 推荐(0)
POJ 2773 Happy 2006【GCD/欧拉函数】

摘要:根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性。 所以只要求出小于n且与n互质的元素即可。 也可以用欧拉函数求小于n且与n互质的元素。就不用O(N)了。速度提高10倍左右。 阅读全文
posted @ 2016-07-29 16:07 L&King 阅读(130) 评论(0) 推荐(0)
POJ 2407 Relatives 【欧拉函数】

摘要:裸欧拉函数。 阅读全文
posted @ 2016-07-29 14:13 L&King 阅读(158) 评论(0) 推荐(0)
HDU 2669 Romantic【扩展欧几里德】

摘要:裸的扩展欧几里德,求最小的X,X=((X0%b)+b)%b,每个X都对应一个Y,代入原式求解可得 阅读全文
posted @ 2016-07-29 11:11 L&King 阅读(117) 评论(0) 推荐(0)
POJ 1061 青蛙的约会【扩展欧几里德】

摘要:设跳的次数为t 根据题意可得以下公式:(x+mt)%L=(y+nt)%L 变形得 (x+mt)-(y+nt)=kL (n-m)t+kL=x-y 令a=(n-m),b=L,c=x-y 得 at+bk=c 此时就相当于求解二元不定方程ax+by=c的最小整数解 1、先计算Gcd(a,b),若n不能被Gc 阅读全文
posted @ 2016-07-28 16:39 L&King 阅读(216) 评论(0) 推荐(0)
求逆元

摘要:什么叫乘法逆元? 这里,我们称 x 是 a 关于 m 的乘法逆元 这怎么求?可以等价于这样的表达式: a*x + m*y = 1 怎么求逆元? 1,扩展欧几里德算法求逆元 2,如果为素数,那么还可以根据费马小定理得到逆元为。 推导过程如下 根据上式,若求ans=(a/b) mod m,可转换成求a* 阅读全文
posted @ 2016-07-28 14:10 L&King 阅读(284) 评论(0) 推荐(0)
扩展欧几里德算法

摘要:有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做? 欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b) ,这样,我们就可以在几乎是 log 的时间复杂度里求解出来 a 和 阅读全文
posted @ 2016-07-28 13:42 L&King 阅读(164) 评论(0) 推荐(0)
HDU 3400 Line belt【三分套三分】

摘要:从A出发到D,必定有从AB某个点E出发,从某个点F进入CD 故有E,F两个不确定的值。 在AB上行走的时间 f = AE / p 在其他区域行走的时间 g = EF / r 在CD上行走的时间 h = FD / q 总时间 T = f + g + h 当E确定时,T1 = g + h + C 此时g 阅读全文
posted @ 2016-07-27 10:31 L&King 阅读(177) 评论(0) 推荐(0)
HDU 2298 Toxophily 【二分+三分】

摘要:一个人站在(0,0)处射箭,箭的速度为v,问是否能够射到(x,y)处,并求最小角度。 首先需要判断在满足X=x的情况下最大高度hmax是否能够达到y,根据物理公式可得 h=vy*t-0.5*g*t*t vx=v*cos(a) vy=v*sin(a) t=x/vx 由此可推出:h=x*tan(a)-( 阅读全文
posted @ 2016-07-26 19:25 L&King 阅读(389) 评论(0) 推荐(0)
HDU 2899 Strange fuction 【三分】

摘要:三分可以用来求单峰函数的极值。 首先对一个函数要使用三分时,必须确保该函数在范围内是单峰的。 又因为凸函数必定是单峰的。 证明一个函数是凸函数的方法: 所以就变成证明该函数的一阶导数是否单调递增,或者其二阶导数是否大于0。 阅读全文
posted @ 2016-07-26 15:13 L&King 阅读(164) 评论(0) 推荐(0)
BZOJ 1500 维修数列【Splay】

摘要:注意:1,内存限制,所以需要回收删除的点 2,当前节点的左连续区间和最大值=max(左子树的左连续区间和最大值,左子树的总和+当节点的值+max(右子树的左连续区间和最大值,0));右连续区间和最大值同理 当前节点的区间和最大值=max(左子树的区间和最大值,max(右子树的区间和最大值,max(左 阅读全文
posted @ 2016-07-25 20:16 L&King 阅读(157) 评论(0) 推荐(0)
KMP模板

摘要:#include #include const int N=1e6+11; int next[N]; void getnext(char *s){ next[0]=0; for(int i=1,j=0;s[i];i++){//j为next[i-1] while(j>0&&s[i]!=s[j]){ j=next[j-1]; ... 阅读全文
posted @ 2016-07-24 13:47 L&King 阅读(192) 评论(0) 推荐(0)
HDU 3487 Play with Chain 【Splay】

摘要:1-n的序列,有两种操作: 1,将一段区间翻转 2,将一段区间切下来放到剩余序列的第C个数后 采用延迟更新的方法维护区间的翻转,并维护一个size域。 添加一个最大点和一个最小点,防止出界 翻转时,将第L-1个点伸展到跟,再将第R+1个点伸展到L-1的右子树,这时R+1的左子树就是要翻转的区间,加上 阅读全文
posted @ 2016-07-22 19:34 L&King 阅读(263) 评论(0) 推荐(0)
POJ 1754 Splay

摘要:单点更新,区间最值,用来练Splay刚好。 将位置作为排序的规则,利用Splay不会改变顺序的特点,求某一段区间[l,r]的最值时,将l-1伸展到根,将r+1伸展到l-1的右子树,这时r+1的左子树就是要求的区间。维护一个最值即可。 阅读全文
posted @ 2016-07-22 15:42 L&King 阅读(240) 评论(0) 推荐(0)
POJ 3481Double Queue Splay

摘要:http://www.cnblogs.com/DrunBee/archive/2012/08/12/2634194.html 阅读全文
posted @ 2016-07-20 15:18 L&King 阅读(221) 评论(0) 推荐(0)
前缀表达式求值

摘要:对于一个前缀表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。例如,前缀表 阅读全文
posted @ 2016-07-12 15:29 L&King 阅读(5904) 评论(1) 推荐(0)
Treap(树堆):随机平衡二叉树实现

摘要:本文是根据郭家宝的文章《Treap的原理及实现》写的。 阅读全文
posted @ 2016-07-11 21:32 L&King 阅读(604) 评论(0) 推荐(0)
Tarjian算法求强联通分量

摘要:如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量, 阅读全文
posted @ 2016-07-11 10:00 L&King 阅读(1842) 评论(1) 推荐(0)
(转)priority_queue的用法

摘要:priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 pri 阅读全文
posted @ 2016-07-11 09:17 L&King 阅读(225) 评论(0) 推荐(0)
中缀表达式转后缀表达式

摘要:中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后 阅读全文
posted @ 2016-07-09 10:33 L&King 阅读(5685) 评论(0) 推荐(1)

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3