OI中的那些实用的小trick

在OI中,我们时常会用到一些小技巧,无论是代码方面还是数学方面抑或是卡常,都有很多不错的小技巧。

鄙人不才,往往没办法想出来,于是就有了这篇汇总帖~

如有疏漏,还请dalao指教!

  1. 结论:\(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)]\)

  2. 分层图

    \(\quad\)分层图是一种常见的图论技巧。常用于图中存在某些限制的情况。具体而言,就是建图时将图按照不同的限制条件分层几层,其间有一些有向边连接,这些有向边一般代表着当前限制条件的状态的改变。这个技巧可以省掉很多特判或者别的的麻烦事,你只用在建好的图上做一般操作就可以了。

不间断更新~

【OI备忘录】trick汇总帖的更多相关文章

  1. AxureRP7.0各类交互效果汇总帖(转)

    了便于大家参考,我把这段时间发布分享的所有关于AxureRP7.0的原型做了整理. 以下资源均有对应的RP源文件可以下载. 当然 ,其中有部分是需要通过完成解密游戏[攻略]才能得到下载地址或者下载密码 ...

  2. [官方教程] Unity 5 BLACKSMITH深度分享 - 汇总帖

    BLACKSMITH深度分享系列 相信此大片在Unite上的惊艳亮相,让许多人至今无法忘却它所带来的震撼,Unity的大师们为了让更多Unity开发者了解此大片是如何用Unity5诞生的,深度分享了多 ...

  3. 【OI备忘录】dalao博文收藏夹

    [dalao学习笔记总览] [数学] 数论分块:数论分块 矩阵树定理Matrix_Tree:矩阵树Matrix-Tree定理与行列式 杨氏矩阵:杨氏矩阵和钩子公式 Hall定理:Hall定理学习小记 ...

  4. Net文章汇总帖

    DevExpress:Data Grid ExamplesHow to: Initialize Cells in Newly Created RowsHow to: Set a Cell Value ...

  5. ACM数学问题分类(汇总帖)

    数论 组合数学 计算几何 博弈论 线性代数 高等数学 线性规划 概率统计

  6. 開始学习swift,资料汇总帖

    最近開始学习swift,以后mac和ios开发就指望它,曾经学oc半途而废了.主要原因是oc等语法实在能适应,如今有swift了.语法有js,scala,python,c++,oc等语言的影子,又一次 ...

  7. OI算法复习汇总

    各大排序 图论: spfa floyd dijkstra *拉普拉斯矩阵 hash表 拓扑排序 哈夫曼算法 匈牙利算法 分块法 二分法 费马小定理: a^(p-1) ≡1(mod p) 网络流 二分图 ...

  8. ccflow汇总帖

    视频教程学习 公司电脑路径; E:\开源工作流\ccflow佳怡物流版\ccflow\doc cclfow的码云地址: https://gitee.com/opencc/ccflow 在线demo演示 ...

  9. 【esp8266】技术汇总帖

    https://blog.csdn.net/xh870189248/article/details/80027961 这哥们 牛

随机推荐

  1. [转帖]Linux教程(20)- Linux中的Shell变量

    Linux教程(20)- Linux中的Shell变量 2018-08-24 11:30:16 钱婷婷 阅读数 37更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博 ...

  2. python实战项目 — selenium登陆豆瓣

    利用selenium 模仿浏览器,登陆豆瓣 重点: 1. 要设置好 chromedriver配置与使用, chromedriver.exe 和 Chrome的浏览器版本要对应, http://chro ...

  3. MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  4. gorm 批量插入数据

    使用gorm 插入数据的时候,根据官方文档可以使用Create或者FirstOrCreate(). 但是官方没有提供批量插入数据的方法. 根据github的 issue得知,我们可以通过自己拼接sql ...

  5. Vue.js 2.x render 渲染函数 & JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  6. mysql_新建表:主键、外键等

    序号 命令(中文) 命令(英文呢) 解释 示例 备注 1 主键约束 primary key 不能重复,不能为空 学号 2 外键约束 foreign key 可以重复,依赖主键 学号 3 非空约束 no ...

  7. 方法2:使用Jenkins构建Docker镜像 --SpringCloud

    前提意义: SpringCloud微服务里包含多个文件夹,拉取仓库的所有代码,然后过根据选项参数使用maven编译打包指定目录的jar,然后再根据这个目录的Dockerfile文件制作Docker镜像 ...

  8. ThreadPoolExecutor使用错误导致死锁

    背景 10月2号凌晨12:08收到报警,所有请求失败,处于完全不可用状态 应用服务器共四台resin,resin之前由四台nginx做负载均衡 服务器现象及故障恢复步骤 登入服务器,观察resin进程 ...

  9. java之hibernate之基于外键的一对一单向关联映射

    这篇讲解基于外键的一对一单向关联映射 1.考察如下信息,人和身份证之间是一个一对一的关系.表的设计 注意:基于外键的一对一关联的表结构和多对一的表结构是一致的,但是,外键是唯一的. 2.类的结构 Pe ...

  10. js 简单的滑动4

    js 简单的滑动教程(四)   作者:Lellansin 转载请标明出处,谢谢 在大概的了解滑动的基本原理和怎么去实现之后,现在我们将更深入的去讨论js的滑动. 相信细心的朋友应该已经发现了,在本教程 ...