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

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

  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. find+xargs+sed批量替换

    写代码时经常遇到要把 .c  和 .h的文件中的某些内容全部替换的情况,用sourceinsight 进行全局的查找是一个方法,但是sourceinsight只能替换一个文件中的字符串,不能同时替换多 ...

  2. SharkCTF2021 BabyGame

    web类题. 访问题给页面,页面里没啥信息.抓包,发现: 访问它,发现是一个游戏. F12之后看调试器里的js代码,发现: console.log("balabalabala"); ...

  3. Java RMI学习与解读(一)

    Java RMI学习与解读(一) 写在前面 本文记录在心情美丽的一个晚上. 嗯.就是心情很美丽. 那为什么晚上还要学习呢? emm... 卷... 卷起来. 全文基本都是根据su18师傅和其他师傅的文 ...

  4. Java:并发笔记-08

    Java:并发笔记-08 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 7. 共享模型之工具-1 7.1 线程池 1. 自定义线程池 步骤1:自定义拒绝策略接 ...

  5. 2021.9.12考试总结[NOIP模拟51]

    T1 茅山道术 仔细观察发现对于每个点只考虑它前面第一个与它颜色相同的点即可. 又仔细观察发现对一段区间染色后以这个区间内点为端点的区间不能染色. 于是对区间右端点而言,区间染色的贡献为遍历到区间左端 ...

  6. 一文读懂Android进程及TCP动态心跳保活

    一直以来,APP进程保活都是 各软件提供商 和 个人开发者 头疼的问题.毕竟一切的商业模式都建立在用户对APP的使用上,因此保证APP进程的唤醒,提升用户的使用时间,便是软件提供商和个人开发者的永恒追 ...

  7. Spring源码解读(一):Spring的背景起源及框架整体介绍

    一.前言 Spring起源于2002年Rod Johnson写的一本书<Expert One-on-One J2EE>,书里介绍了Java企业应用程序开发情况,并指出Java EE和EJB ...

  8. vim 让人爱不释手的编辑器之神

    VIM 基本介绍 vim诞生已有20多年,它常被人称之为编辑器之神,vim的操作理念可以说是独具一格而又出类拔萃,使用vim能极大的提升文本处理效率,因此熟练掌握vim应该是每个程序员都应该做到的事情 ...

  9. [WPF] 在 Windows 11 中处理 WindowChrome 的圆角

    1. Windows 11 的圆角 在直角统治了微软的 UI 设计多年以后,微软突然把直角骂了一顿,说还是圆角好看,于是 Windows 11 随处都可看到圆角设计.Windows 11 使用 3 个 ...

  10. Python 字符串的encode与decode

    python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...