【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 这哥们 牛
随机推荐
- Java开发笔记(一百三十二)Swing的表格
前面介绍了程序界面上一些简单控件的组合排列,它们用来表达相互之间联系较弱的信息倒还凑合,要是用来表达关联性较强的聚合信息就力不从心了.倘若只是简单信息的罗列,例如商品名称列表.新闻标题列表.学生姓名列 ...
- Weave跨主机实现docker互通,固定ip及dns使用介绍
一.weave介绍Weave是由weaveworks公司开发的解决Docker跨主机网络的解决方案,现在就采用它来实现Docker多宿主机互联的目的,它能够创建一个虚拟网络,用于连接部署在多台主机上的 ...
- C++类的组合、前向引用声明
3.5类的组合 Part1.应用背景 对于复杂的问题,往往可以逐步划分为一系列稍微简单的子问题. 解决复杂问题的有效方法是将其层层分解为简单的问题组合,首先解决简单问题复杂问题也就迎刃而解了. 在面向 ...
- Microsoft的考验――查找第二大的数
#include<stdio.h> int main() { int n,m,t,max,max1; scanf("%d",&n); while(n--) { ...
- hyper-v安装windows7
win7镜像下载地址 http://msdn.itellyou.cn/ 该网站都是微软系列的正规软件 非常好用 在hyper-v 虚拟机安装windows系统时,到百度搜索了几个iso 都不好用 到h ...
- visual studio code 命令行创建发布一个项目
安装vs core 打开按ctrl+~键打开终端 输入dir看看有什么文件,输入md Test 创建一个文件夹,选择文件后创建一个项目 输入dotnet可以查看信息 执行dotnet --help或者 ...
- promise实现
目录 promise实现 Promise 是 ES6 新增的语法,解决了回调地狱的问题. 可以把 Promise 看成一个状态机.初始是 pending 状态,可以通过函数 resolve 和 rej ...
- self attention pytorch代码
实现细节; 1.embedding 层 2.positional encoding层:添加位置信息 3,MultiHeadAttention层:encoder的self attention 4,sub ...
- 轻量ORM-SqlRepoEx介绍
轻量级 ORM-SqlRepoEx 介绍 SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的 ...
- SIM7500 SIM7600 SIM800 HTTP
解释 //Start HTTP service AT+HTTPINIT //Stop HTTP service AT+HTTPTERM //Set HTTP Parameters value /* & ...