【OI备忘录】trick汇总帖
OI中的那些实用的小trick
在OI中,我们时常会用到一些小技巧,无论是代码方面还是数学方面抑或是卡常,都有很多不错的小技巧。
鄙人不才,往往没办法想出来,于是就有了这篇汇总帖~
如有疏漏,还请dalao指教!
结论:\(gcd(F[n],F[m])=F[gcd(n,m)]\),其中F为斐波那契数列
\(\quad\)证明:
我们设\(n<m\),\(F[n]=a\)和\(F[n+1]=b\)。
则\(F[n+2]=a+b,F[n+3]=a+2b,…F[m]=F[m-n-1]a+F[m-n]b\)
\(\because \quad F[n]=a,F[n+1]=b,F[m]=F[m-n-1]a+F[m-n]b\)
\(\therefore \quad F[m]=F[m-n-1]*F[n]+F[m-n]*F[n+1]\)
又\(\because \quad gcd(F[n],F[m])=gcd(F[n],F[m-n-1]\)
而\(F[n]|F[m-n-1]\)
\(\therefore \quad gcd(F[n],F[m])=gcd(F[n],F[m-n]\)
引理:\(gcd(F[n],F[n+1])=1\)
证:由欧几里德定理知
\(gcd(F[n],F[n+1])=gcd(F[n],F[n+1]-F[n])=gcd(F[n],F[n-1])\)
\(=gcd(F[n-2],F[n-1])\)
\(…………\)
\(=gcd(F[1],F[2])=1\)
$ \therefore \quad gcd(F[n],F[n+1])=1$
由引理知:
\(F[n],F[n+1]\)互质
而\(gcd(F[n],F[m])=gcd(F[n],F[m-n]*F[n+1])\)
\(\therefore \quad gcd(F[n],F[m])=gcd(F[n],F[m-n])\)
即\(gcd(F[n],F[m])=gcd(F[n],F[m\;mod\;n])\)
继续递归,将\(m1=m\;mod\;n\),则\(gcd(F[n],F[m])=gcd(F[n\;mod\;m1],F[m1])\)
\(……\)
不难发现,整个递归过程其实就是在求解\(gcd(n,m)\)
最后递归到出现\(F[0]\)时,此时的\(F[n]\)就是所求gcd。
\(\therefore \quad gcd(F[n],F[m])=F[gcd(n,m)]\)
分层图
\(\quad\)分层图是一种常见的图论技巧。常用于图中存在某些限制的情况。具体而言,就是建图时将图按照不同的限制条件分层几层,其间有一些有向边连接,这些有向边一般代表着当前限制条件的状态的改变。这个技巧可以省掉很多特判或者别的的麻烦事,你只用在建好的图上做一般操作就可以了。
不间断更新~
【OI备忘录】trick汇总帖的更多相关文章
- AxureRP7.0各类交互效果汇总帖(转)
了便于大家参考,我把这段时间发布分享的所有关于AxureRP7.0的原型做了整理. 以下资源均有对应的RP源文件可以下载. 当然 ,其中有部分是需要通过完成解密游戏[攻略]才能得到下载地址或者下载密码 ...
- [官方教程] Unity 5 BLACKSMITH深度分享 - 汇总帖
BLACKSMITH深度分享系列 相信此大片在Unite上的惊艳亮相,让许多人至今无法忘却它所带来的震撼,Unity的大师们为了让更多Unity开发者了解此大片是如何用Unity5诞生的,深度分享了多 ...
- 【OI备忘录】dalao博文收藏夹
[dalao学习笔记总览] [数学] 数论分块:数论分块 矩阵树定理Matrix_Tree:矩阵树Matrix-Tree定理与行列式 杨氏矩阵:杨氏矩阵和钩子公式 Hall定理:Hall定理学习小记 ...
- Net文章汇总帖
DevExpress:Data Grid ExamplesHow to: Initialize Cells in Newly Created RowsHow to: Set a Cell Value ...
- ACM数学问题分类(汇总帖)
数论 组合数学 计算几何 博弈论 线性代数 高等数学 线性规划 概率统计
- 開始学习swift,资料汇总帖
最近開始学习swift,以后mac和ios开发就指望它,曾经学oc半途而废了.主要原因是oc等语法实在能适应,如今有swift了.语法有js,scala,python,c++,oc等语言的影子,又一次 ...
- OI算法复习汇总
各大排序 图论: spfa floyd dijkstra *拉普拉斯矩阵 hash表 拓扑排序 哈夫曼算法 匈牙利算法 分块法 二分法 费马小定理: a^(p-1) ≡1(mod p) 网络流 二分图 ...
- ccflow汇总帖
视频教程学习 公司电脑路径; E:\开源工作流\ccflow佳怡物流版\ccflow\doc cclfow的码云地址: https://gitee.com/opencc/ccflow 在线demo演示 ...
- 【esp8266】技术汇总帖
https://blog.csdn.net/xh870189248/article/details/80027961 这哥们 牛
随机推荐
- 北京WINUI外包团队:长期开发各类基于WINUI框架应用项目
今年早些时候的Build 2018中,微软高层表示,使用.NET Core 3.0,开发人员将获得使用WPF.Windows Forms和XAML Islands(WinForms和WPF应用程序中的 ...
- 【VS开发】MFC多显示器适配显示设置
由于工程需要在多个显示器上显示不同类容,故查找了一些资料来满足这个功能.在VC中分为三步来操作:检测显示器个数:读取屏幕分辨率和其他参数:设置程序的显示坐标. 第一步:检测屏幕个数 网上查找到的通用方 ...
- hihocoder 1566 皇室成员的名字
#1566 : 皇室成员的名字 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho正在学习世界历史.他发现历史上很多西方国家的皇室成员的名字都是由英文名字加罗马数字组 ...
- 「中山纪中集训省选组D4T1」折射伤害 高斯消元
题目描述 在一个游戏中有n个英雄,初始时每个英雄受到数值为ai的伤害,每个英雄都有一个技能"折射",即减少自己受到的伤害,并将这部分伤害分摊给其他人.对于每个折射关系,我们用数对\ ...
- 倒数第K个结点
typedef struct Lnode{ int data; struct Lnode *next; }Lnode,*Link; Link fi(Link head,int k){ Link fa ...
- 【转帖】AMD Zen之父、Intel副总Jim Keller到底有多牛?
AMD Zen之父.Intel副总Jim Keller到底有多牛? https://www.cnbeta.com/articles/tech/907295.htm 几乎玩过 所有的中国国产化CPU的祖 ...
- Java反射桥接方法解析
在阅读mybaits源码的反射模块时,看到了如下的一段代码: /** * 添加 Method 数组到 uniqueMethods * @param uniqueMethods * @param met ...
- lambda表达式笔记
前几天一位好友分享了一篇文章,其中讲到了lambda表达式,正好最近看了一些内容,就做做笔记吧... lambda表达式服务于函数式接口,如果需要一个函数式接口的对象时,就可以用lambda表达式代替 ...
- 2019秋季PAT甲级_C++题解
2019 秋季 PAT (Advanced Level) C++题解 考试拿到了满分但受考场状态和知识水平所限可能方法不够简洁,此处保留记录,仍需多加学习.备考总结(笔记目录)在这里 7-1 Fore ...
- github中的各种操作
1.上传文件到github 如图,你现在有三个项目在一个文件夹中,我们要把它上传到自己的github仓库中,该怎么做呢? 1.首先右击空白处,点击Git Bash Here,出现命令行 2. git ...