• 曼哈顿距离 \(\text{dist}(A,B)=|x_{A}-x_{B}|+|y_{A}-y_{B}|\) 可以拆成 \(\max\{x_{A}-x_{B}+y_{A}-y_{B},x_{A}-x_{B}-y_{A}+y_{B},-x_{A}+x_{B}+y_{A}-y_{B},-x_{A}+x_{B}-y_{A}+y_{B} \}\)。agc 034d

  • 走步数什么的构造题步数限制大约在 \(\log\) 级别可考虑二进制拆分(倍增构造)。arc 103b

  • \(x\bmod m\) 除了拆成 \(x-\lfloor\frac{x}{m}\rfloor\times m\) 还可以拆成 \(x-km,(k\in \mathbb{Z})\)。arc 111b

  • 像什么 第 \(i\) 个人对应第 \(p_{i}\) 个物品,\(p\) 是 \(1,\cdots,n\) 的一个排列这种,直接连边。arc 111c / some abc d

  • 对应上一条,这种情况连边一定是一个这样 \(i\rightarrow p_{i}\rightarrow p_{p_{i}}\rightarrow\cdots\rightarrow i\) 的环。arc 111c

  • 一个平面上有一堆点 \((x_{1},m),(x_{2},m),\cdots,(x_{n},m)\)(\(x_{i}\) 单调递增),找一点 \((n,m)\) 使得 \(\sum\text{dist}((x_{i},m),(n,m))\) 最小,则 \(n\) 的取值范围是

    \([a_{\lfloor\frac{n+1}{2}\rfloor},a_{\lfloor\frac{n+2}{2}\rfloor}]\)。cf 1486b

  • 字符串本质不同子串数:\(\sum_{i=1}^{n}n-sa_{i}-ht_{i}+1=\sum_{i=1}^ni-ht_i\) / \(\sum_{i=0}^{n-1}n-sa_i-ht_i=i+1-ht_i\)。bzoj 4310

  • 把字符串反转后插入 SAM 后,两个原串的后缀在 parent tree 上的 LCA 是这两个后缀的 LCP。bzoj 3879

  • 对于树上/图上/序列上数某些个点中满足一些条件的点的个数(像 LCA、重心 之类的),考虑一个点能作为满足条件的点几次。plural

  • 我们记一个结点 \(u\) 的重儿子为 \(hb_{u}\),对于 \(\text{subtree}(u)\),如果 \(u\) 不是 \(\text{subtree}(u)\) 的 centroid,那么 \(\text{subtree}(u)\) 的 centroid 一定在 \(\text{subtree}(hb(u))\) 里。csp 2019 centroid

  • 根据上一条,我们可以直接倍增找重心(注意只能从根开始找)。csp 2019 centroid

  • 值域比较小的关于值域的一些不等或等量关系的题可以考虑把值域放到指数构造生成函数。hk 2016 a+b problem

  • \(i\times j=\binom{i+j}{2}-\binom{i}{2}-\binom{j}{2}\)。loc 28870

  • 答案和阶乘相关的,并且模数长得很怪,比如 \(998857459=461\times773\times2803\) 这种,当 \(i\ge2803\) 时,\(i!\bmod998857459=0\)。loc 28853

  • BST 相关,序列有序,\([l,r]\) 对应 BST 上一棵子树,且其父结点一定是 \(l-1\) 或 \(r+1\),具体是哪个要看大小讨论。cf 1025d

  • 序列分段可以先考虑平方 DP 再优化。csp 2019 partition / ctsc 2012

  • 有多个关键字的 DS 题可以考虑离线按一个关键字排序。lg p3247

  • 找递推关系可以考虑差分。lg p6156

  • \(low_{y}\leqslant dfn_{x}\) 意味着 \(x,y\) 在一个环。plural

  • \(a\&b+a\oplus b=a|b\); \(a\&b+a|b=a+b\);\(a+b=a\oplus b+2(a\&b)\)。cf 1451e1

  • \(fib(n+m)=fib(n+1)fib(m)+fib(n)fib(m-1)\)。cf 446c

  • 棋盘向 下 / 右 走,很有些性质和 \(n+m\) 有关,且移动一次 \(i+j\) 加一,不会存在移动一次 \(i+j\) 还是 \(i+j\)。同时在一条从右上往左下的对角线上的点 \(i+j\) 相同。arc 120b

  • 操作类似于令 \(a(i)\leftarrow a(i)-1,a(i+1)\leftarrow a(i+1)+1\) 然后交换 \(a(i),a(i+1)\) 的,本质是保证下标,令 \(A(i)=a(i)+i\) 可以使问题简化。arc 120c

  • 在 \(n\) 个元素中连边如果行不通不妨考虑每个元素内部连边。sgu 101 / abc 209e

  • 有多个元素分别对答案贡献时,如果单个元素的贡献很好算,不妨考虑每个元素的贡献次数。many e.g. abc 209f

  • 出现 \(a\mod p=b\mod p\) 时,等价于 \(a-b\equiv0\pmod p\),对应到 \(a_i\equiv a_{i+1}\equiv\dots\equiv a_j\pmod p\),就考虑差分。cf 1548b (cf 1549d)

  • 出现形似 \(a\times b\) 为完全平方数的限制时,考虑消除平方因子,弱化成 \(a=b\)。cf 840c

  • \(\gcd(a,b)=\gcd(a+kb,b)\)。unknown

  • \(\sum_i\sum_j[(i,j)=x]=\varphi(\lfloor\frac{N}{x}\rfloor)\times2-1\)。

  • 当 \((a,b)=1\),\((a^i-b^i,a^j-b^j)=a^{(i,j)}-b^{(i,j)}\)。

  • 如果一个函数 \(f(x)\) 的 \(k\) 阶差分是一个非零常数那么 \(f(x)\) 一定是一个 \(k\) 次多项式。

  • 若题目为序列的变化,考虑构造终止情况。

  • dp 刷表看看转移范围是否连续,可以看是否能整体 dp 维护。

  • 同一个图的 MST 每种权值的边的数量是一定的。cf 891c

  • 区间操作考虑差分(指题目中对各种序列的操作,不是那种数据结构题)。cf 1120d

  • 数列全为零等价于差分序列全为零。cf 1634f

  • 判定一个点是否在多边形内可由这个点以任意斜率拉出一条射线,看交点奇偶性。cf 375c

  • 数的出现次数的 mex 可以暴力求。cf 940f

  • 排列题可以放在逆排列里考虑,重新描述问题。wc 2022 rrads

  • 上上一条,不同出现次数的级别是根号,很多时候都可以考虑暴力。cf 1476g

  • 出现概率的和式考虑事件是否独立构造组合意义。cf 1523e

  • 和式 = 某个数,考虑看成某个数个 1 然后分配(精度思维)。hdu 7060

Record -「Tricks」记录的更多相关文章

  1. 所有 Python 程序员必须要学会的「日志」记录。

    本文字数:3840 字 阅读本文大概需要:10 分钟 写在之前 在我们的现实生活中,「日志记录」其实是一件非常重要的事情,比如银行的转账记录,汽车的行车记录仪记录行驶过程中的一切,如果出现了什么问题, ...

  2. 「2014-2-6」TokuMX and MongoDB related materials collection

    简介参考 TokuMX 和 MongoDB 各自的官方站点.       ##  Tokutek 最重要的特点和 marketing word 是所谓 fractal tree indexing te ...

  3. 「MoreThanJava」计算机发展史—从织布机到IBM

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  4. 「译」JUnit 5 系列:条件测试

    原文地址:http://blog.codefx.org/libraries/junit-5-conditions/ 原文日期:08, May, 2016 译文首发:Linesh 的博客:「译」JUni ...

  5. 「2014-3-18」multi-pattern string match using aho-corasick

    我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...

  6. 「2014-3-17」C pointer again …

    记录一个比较基础的东东-- C 语言的指针,一直让人又爱又恨,爱它的人觉得它既灵活又强大,恨它的人觉得它太过于灵活太过于强大以至于容易将人绕晕.最早接触 C 语言,还是在刚进入大学的时候,算起来有好些 ...

  7. 「2013-9-5」Configure WingIDE for better display of East Asian Glyphs

    很久没写软件配置相关的博客了.这次对于 WingIDE 在 Windows 下的字体配置,折腾了好一阵子,略曲折,也反映了「不清楚原理和背景的情况下,盲人摸象的效率低下是必然」这条放之四海而皆准的赤果 ...

  8. React + Node 单页应用「二」OAuth 2.0 授权认证 & GitHub 授权实践

    关于项目 项目地址 预览地址 记录最近做的一个 demo,前端使用 React,用 React Router 实现前端路由,Koa 2 搭建 API Server, 最后通过 Nginx 做请求转发. ...

  9. 「插件」Runner更新Pro版,帮助设计师远离996

    三年多前Runner团队在德国汉堡的骇客松上第一次发布了Sketch插件Runner的beta版本.从那以后,这个团队的目标一直很清晰: 创造一个加速设计工作流的工具. 他们只给Runner添加真正能 ...

  10. 「NOI2013」小 Q 的修炼 解题报告

    「NOI2013」小 Q 的修炼 第一次完整的做出一个提答,花了半个晚上+一个上午+半个下午 总体来说太慢了 对于此题,我认为的难点是观察数据并猜测性质和读入操作 我隔一会就思考这个sb字符串读起来怎 ...

随机推荐

  1. vim 之中 U 命令的浅析

    以下文章来源于CSDN,作者黑翼天使56,本文章经原作者同意后授权转载. 今天看 vim帮助文档的 user-manual 的第二章,发现了还有U(大写)这个命令,于是反复实验,略微搞懂了一点它的用处 ...

  2. 如何解决安装完 webdriver-helper 但不可用的问题?

    一.问题分析 使用 selenium ,并使用自动化安装浏览器驱动的方法,下载 webdriver_helper 的官网:webdriver-helper · PyPI.下载完成后在终端使用 pip ...

  3. STL-set(ACM)

    1.set只能insert().erase(),没有push()等操作 2.插入的元素自动排序按从小到大的顺序排 3.不会插入相同的元素,已经插入了6,之后就不会再插入了 4.时间复杂度为 O(log ...

  4. ArrayList 扩容机制

    ArrayList 基本介绍 ArrayList实现了List接口.它可以存储包括null的任何类型的对象,允许重复元素.ArrayList在内部使用一个数组来存储元素,当元素数量超过数组容量时,Ar ...

  5. qrcode模块生成二维码

    安装qrcode模块 pip install qrcode 简单使用 import qrcode data = 'hello world' img = qrcode.make(data) # 显示二维 ...

  6. PostgreSQL 12 文档: 部分 II. SQL 语言

    部分 II. SQL 语言 这部份描述在PostgreSQL中SQL语言的使用.我们从描述SQL的一般语法开始,然后解释如何创建保存数据的结构.如何填充数据库以及如何查询它.中间的部分列出了在SQL命 ...

  7. Jmeter压测实战:Jmeter二次开发之自定义函数

    1 前言 Jmeter是Apache基金会下的一款应用场景非常广的压力测试工具,具备轻量.高扩展性.分布式等特性.Jmeter已支持实现随机数.计数器.时间戳.大小写转换.属性校验等多种函数,方便使用 ...

  8. Unity中的InitializeOnLoad特性:深入解析与实践

    Unity中的InitializeOnLoad特性:深入解析与实践 在Unity开发过程中,我们经常需要在编辑器启动时或脚本重新编译后执行一些操作,例如初始化数据.注册事件等.这时,我们可以使用Ini ...

  9. HCL实验:5.单臂路由实现不同vlan通信

    使用单臂路由实现不同vlan 互通 拓扑图 网关均为所在网段的第一个地址 交换机配置 创建vlan 划分端口 配置端口类型 显示简要信息 路由器配置 路由器的端口默认关闭,需要手动开启 进行子端口的划 ...

  10. hexo博客yilia主题_缺失模块_解决方案

    hexo博客yilia主题,左侧栏目有一个全部文章的按钮,刚开始开始报错缺失模块,如下图: 我解决了这个问题着实不容易饶了弯路,但是跟着提示步骤,其实很简单,走起: 1.查看node版本 win键+R ...