在本博客中,一般写题解的题都是我认为比较有价值的题,然而我还做过一些有一定价值,但并没有达到值得写一篇题解的程度,故将这些题目总结出的套路用一句话概括在这里:

当然如果看到我太久不更请在评论区里催我一下

  1. 计数题里碰到平方可以尝试把它们拆成 每对符合要求元素各自产生贡献(upd on 2021.9.13,CF1187F)
  2. 概率题一定要注意随机变量是否独立,只有它们独立它们的贡献才能直接相乘(upd on 2021.9.13,CF1187F)
  3. 看到序列上的线性变换(指操作可以写成线性变换的形式)可以尝试用线段树维护矩阵乘法维护,如果涉及常数那么矩阵上可以额外维护一个常数维存储这些常量(upd on 2021.9.14,P7453)
  4. 看到 \(c_i\leftarrow c_{i-1}+c_{i+1}-c_i\) 这种形式的东西,应知道这东西等价于对 \(c_i-c_{i-1}\) 的置换(upd on 2021.9.15,CF1110E)
  5. 看到要求 \(x-y=v\) 的数的对数,并且值域不算太大,可以想到差卷积(upd on 2021.9.15,P3760)
  6. 对于某些数论中的题目,关于质因子的状压可以转化为原数的约数,因为每个数的质因子组成的集合本身就可以表示一个状态(不过一般状压质因子复杂度也可以被证明是调和级数或者类似的东西?)(upd on 2021.9.18,NFLSOJ 12429)
  7. 有的最优化问题有时也可以转化为计数问题,通过模上一个或几个大质数并判断余数是否为 0 来求解(upd on 2021.9.18,NFLSOJ 12429)
  8. unordered_map 常数大约是数组的两倍,所以以后状压 dp 之类的题目能删减状态就删减状态(upd on 2021.9.19,NFLSOJ 10131)
  9. 对于质数 \(p\),必然有 \(\forall n\ge p,n!\bmod p=0\),利用这个性质可以使得很多 \(n\) 很大(比方说 \(10^{18}\))的情况变成诈骗题(upd on 2021.9.19,NFLSOJ 10131)
  10. 分块打表有时是一个不错的技巧(upd on 2021.9.19,NFLSOJ 10131)
  11. 看到斜率优化的形式的式子要想起来是斜率优化啊!!!(upd on 2021.9.20,CF643C)
  12. 对于 \(\sum\limits_{i=1}^ma_i=n\) 的数列 \(a\),其中包含的不同数的个数只有 \(\mathcal O(\sqrt{n})\) 种(upd on 2021.9.21,CF1574F,利用这个性质可以不用分治 FFT/求逆)
  13. 线段树维护信息的本质是合并两个区间的信息,因此如果发现一些信息满足可合并性(如链上的一些信息,或者一些有关树的直径/虚树的信息),可以想到线段树(upd on 2021.9.21,CF1083C)
  14. 一个数 \(\bmod\) 完一个比它小的数后大小减半,这有时是一个非常重要的性质(upd on 2021.9.21,AGC003E)
  15. two pointers 是均摊数据结构(雾),不支持撤销(upd on 2021.9.21,NFLSOJ 12430)
  16. 矩阵乘法可以通过“先枚举 \(i,k\) 再枚举 \(j\),并且当 \(k\bmod 16=0\) 时再取模”的套路减少取模常数(upd on 2021.9.22,NFLSOJ 10127)
  17. 对于矩阵乘法的题目,能把矩阵改成向量就改成向量,减少常数(upd on 2021.9.23,NFLSOJ 10127)
  18. 删除操作非常棘手,不妨考虑线段树分治(upd on 2021.9.24,CF678F),也可以倒立(
  19. 看到保证最短路径的前提下,求 xxx 的最值/计数的问题可以考虑建出最短路径 DAG,这样最短路径可以转化为最短路径 DAG 上的路径(upd on 2021.9.25,LOJ 2769)
  20. 区间 DP 的转移一般可以考虑“最后一次进行的操作”,然后将序列分成两个部分并计算贡献(upd on 2021.9.26,P4766)
  21. 看到“每个点的度数 \(\ge k\) 的题目”可以考虑按将所有点及其度压入一个 set 中并动态删点(upd on 2021.9.28,NFLSOJ 12448)
  22. 在构造题中看到下取整可以往抽屉原理的方向思考(upd on 2021.9.28,CF1450C2)
  23. 碰到 LIS/LDS 的题目不要只拘泥地想“\(dp_i\) 表示 \(i\) 结尾的 LIS/LDS 的最长长度”,也可以交换定义域&值域,变成“长度为 \(i\) 的 LDS/LIS 的最大/小结尾元素”(upd on 2021.9.28,NFLSOJ 12449)
  24. 树剖求 LCA 常数非常小,\(\log n\) 跑起来和 \(\mathcal O(1)\) 差不多快,不过会被满二叉树卡(upd on 2021.9.29,NFLSOJ 12456)
  25. 碰到从开头删除/结尾插入,全局插入,并且合并复杂度很高,但插入复杂度不高的题目,可以考虑双栈模拟队列(upd on 2021.9.29,NFLSOJ 12458)
  26. 使用莫队二次离线可以将一些 \(n\sqrt{n}\log n\) 将为 \(n\sqrt{n}\)。(upd on 2021.10.1,NFLSOJ 10175)
  27. 看到 DAG 的计数可以想到枚举度为 0 的点然后容斥(upd on 2021.10.4,洛谷 P6295,更多 trick 可见那题题解
  28. 有的概率题会让你保留成小数形式 instead of 取模,这时候你就可以考虑重复某个过程直到精度符合要求 instead of 推无穷级数(upd on 2021.10.4,CF623D)
  29. 对于计数题,如果发现等价表达不太好找,可以尝试容斥(upd on 2021.10.11,NFLSOJ 12473)
  30. 对于一些带修的数据结构题,可以考虑离线扫描线并以时间为下标(upd on 2021.10.15,NFLSOJ 12461)
  31. 对于区间查询所有还活着的位置并将这些活着的位置全部删去的模型,可以考虑使用并查集维护,这样可以做到 \(\Theta O(n\alpha(n))\)(upd on 2021.11.2,NFLSOJ 12554)

一些 tips的更多相关文章

  1. Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)

    忘记Root密码肿么办 Mac上安装MySQL就不多说了,去mysql的官网上下载最新的mysql包以及workbench,先安装哪个影响都不大.如果你是第一次安装,在mysql安装完成之后,会弹出来 ...

  2. 【Tips】史上最全H1B问题合辑——保持H1B身份终级篇

    [Tips]史上最全H1B问题合辑——保持H1B身份终级篇 2015-04-10留学小助手留学小助手 留学小助手 微信号 liuxue_xiaozhushou 功能介绍 提供最真实全面的留学干货,帮您 ...

  3. layer.js中layer.tips

    <script src="~/Content/js/layer/layer.js"></script> layer.tips('名称不能为空', '#pro ...

  4. HTML 最简单的tips 怎么支持指定DIV显示提示信息

    <body> <style type="text/css"> a.link{position:relative;} a.link div.tips{ bor ...

  5. CSS:CSS使用Tips

    Css是前端开发中效果展现的主要部分之一,良好的Css书写习惯可以为实际的项目开发提高效率,也可以为实现良好的团队合作提供保证. 一般新手在使用Css的时候经常会犯一些错误,出现一些不经意的漏洞,如果 ...

  6. 【读书笔记】100个Switf必备tips

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1.Selector 在Swi ...

  7. 【转】40个良好用户界面Tips

    一个良好的用户界面应具有高转换率,并且易于使用.但要用户体验良好并不容易做到,下面我们整理了40个良好用户界面Tips,希望能对你有帮助! 1 尽量使用单列而不是多列布局 单列布局能够让对全局有更好的 ...

  8. 转:Eclipse Search Tips

    from:  https://github.com/ajermakovics/eclipse-instasearch/wiki/Eclipse-search-tips Eclipse Search T ...

  9. VS:101 Visual Studio 2010 Tips

    101 Visual Studio 2010 Tips Tip #1        How to not accidentally copy a blank line TO – Text Editor ...

  10. [css 揭秘]-css coding tips

    css 揭秘之css coding tips demo(1) html 代码: <body> <section> <div class="demo1" ...

随机推荐

  1. 【NXOpen.UF扩展】修改表达式

    public static class UFExpEx { /// <summary> /// 修改当前部件的表达式 /// </summary> /// <param ...

  2. vue.$set实现原理

    上源码: export function set (target: Array<any> | Object, key: any, val: any): any { if (process. ...

  3. 想要彻底搞懂大厂是如何实现Redis高可用的?看这篇文章就够了!(1.2W字,建议收藏)

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  4. SLAM名词介绍

    gauge freedom:测量自由度 degrees-of-freedom(DoF) 自由度 wide-baseline matches:宽基线匹配 宽基线匹配:从描绘同一场景的两个或多个图像中建立 ...

  5. [对对子队]会议记录4.21(Scrum Meeting12)

    今天已完成的工作 吴昭邦 ​ 工作内容:基本实现改变顺序合成 ​ 相关issue:实现流水线合成系统的逻辑 ​ 相关签入:4.21签入1 梁河览 ​ 工作内容:修改设置界面bug ​ 相关签入:4.2 ...

  6. Noip模拟40 2021.8.15

    T1 送花 按照题解意思说是扫描线题,但我觉得像一个线段树优化$dp$ 主要思想一样,就是暴力枚举右端点,同时维护左端点的最值, 考虑两种情况, 如果左端点在$r$扫到的数$i$上一次出现的位置之前, ...

  7. 查找最小生成树:普里姆算法算法(Prim)算法

    一.算法介绍 普里姆算法(Prim's algorithm),图论中的一种算法,可在加权连通图里搜索最小生成树.意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之 ...

  8. 使用jQuery-UI来实现一个Ajax的自动完成功能(自动填充搜索框的下拉值)

    首先你要在.net拓展包中去搜索  jquery ui (Combined Libray)安装这么个文件 第二部   在控制器中添加我们根据输入搜索框的值获取符合的记录集的action 第三步  有了 ...

  9. Luogu P1297 [国家集训队]单选错位 | 概率与期望

    题目链接 题解: 单独考虑每一道题目对答案的贡献. 设$g_i$表示gx在第$i$道题目的答案是否正确(1表示正确,0表示不正确),则$P(g_i=1)$表示gx在第$i$道题目的答案正确的概率. 我 ...

  10. 数组模拟双链表,你get到了吗?

    数组模拟双链表 通过前面的学习我们知道单链表是单个指针指向操作,那么通过类比我们可以把指针设定为两个,并且让它们分别指向前后数据,这就是"双向链表".使用这种链表,不仅可以从前往后 ...