首页 > 其他分享 >OI 中一些可能有用的小 Trick 与注意点

OI 中一些可能有用的小 Trick 与注意点

时间:2023-09-28 23:33:38浏览次数:38  
标签:OI 复杂度 Trick 有用 无向 考虑 不香 节点 根号

1.考试的时候先考虑dp线段树
2.记得检查数组空间
3.考虑尽量卡常
4.尽量考虑退式子
5.看到关于01爆搜选择的一定要先考虑01背包,不要直接写爆搜
6.清楚要不要文件读写和子文件夹
7.树上边权转点权转移到儿子节点,但是特别注意多余信息处理(尤其是树剖的时候)
比如树剖结束的时候处理最后一条重链,最顶端节点的答案不能处理进去(因为会有多余信息(\(top_x,fa_{top_x}\)))还有一些计数题比如说统计路径上有多少个不同颜色的,注意一下根节点的多余数据处理(因为根节点是没有颜色的)。
8.看清楚是有向图还是无向图,无向图空间要开 2 倍
9.在缩点或拆点时分清旧图和新图
数据结构题不要只想 log 结构,分块它不香吗?根号分治它不香吗? 莫队它不香吗?
有些 DS 题会问你一个区间 \([l,r]\) 内需要划分成至少几个子序列以满足题意,比如这道题,这个时候有一种思路就是先双指针处理出每个点往右边能够预处理的最右点,然后倍增即可。
FHQ Treap 在处理区间信息的时候如果需要维护懒标记的时候需要注意 Merge() 函数中 x,y 都需要下传懒标记。典型例题。
无论是什么 ds 题,一定要将想法往可合并性上靠(莫队/分块:?)。
如果出现区间取模/取对数/开根号之类的玩意,可以考虑这玩意取模会砍半/取对数与开根号数字降的很快等从而可以暴力做并且复杂度正确,并且该情况下单点修改操作也允许并且复杂度也是对的。
DP:
遇到类似于 n 个东西分成两组,差最小等问题,不要总是想着一些奇奇怪怪的算法,如果就是个容量为 \(\frac{n}{2}\) 的背包问题呢? 此时的体积和价值都是这 n 个东西的属性。

遇到区间问题多想想差分,尤其是树上差分。
类根号分治思想真的是非常常见又好用的一种思想!
看到题目中有回溯操作时,除了可持久化外也可以想想建立操作树。
当你想不出题目的时候不妨考虑一下随机化乱搞比如说模拟退火或者是随机权值和 hash/xor hash。

对于一张无向图的邻接矩阵而言,如果 \(A_{i,j}\) 表示 \(i\) 与 \(j\) 之间是否有连边,那么做矩阵快速幂 \(A^k\) 之后,\(A_{i,j}\)的值表示从 i 出发走 k 步有多少方案到 j。
位运算三大处理方法:线性基(异或专属),拆位,01Trie。推式子时可能 a⊕b=a|b-a&b 会有用。
拆位处理二进制时,注意或得到 0 和与得到 1 的限制是更严的,做题先考虑这一点。
枚举 \(S\) 及其子集,\(O(3^n)\)
for(int r=s;r;r=(r-1)&s)
复杂度证明考虑枚举子集 ,然后写出式子二项式定理化简。

标签:OI,复杂度,Trick,有用,无向,考虑,不香,节点,根号
From: https://www.cnblogs.com/liaiyang/p/17736653.html

相关文章

  • OI 超几何函数入门
    第一章定义超几何函数\[F(a_1,a_2\dotsa_n;b_1,b_2\dotsb_m;z)=\sum_{k\ge0}\frac{a_1^{\overline{k}}\dotsa_n^{\overline{k}}z^k}{b_1^{\overlinek}\dotsb_n^{\overlinek}k!}\]其中\(b_i\)不为非正的整数。举出若干简单例子:\[F(1;1;z)=e^z,F(1,1;1;z)=\frac{1}{1......
  • Android GreenDao数据库使用
    GreenDao介绍GreenDao是一个开源的AndroidORM嵌入式关系数据库,通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),使用一个简单的面向对象的API来存储、更新、删除和查询Java对象。GreenDao特点●最佳性能(可能是Android中最快的ORM),基准测试也是开源的;●......
  • P5020 [NOIP2018 提高组] 货币系统
    #include<cstdio>#include<algorithm>usingnamespacestd;constintN=105;constintA=25005;inta[N];booldp[A];intmain(){ intt;scanf("%d",&t); while(t--){ intn;scanf("%d",&n); for(inti=......
  • P1941 [NOIP2014 提高组] 飞扬的小鸟
    #include<cstdio>#include<algorithm>usingnamespacestd;constintN=10005;constintM=1005;constintINF=1e9;intup[N],down[N],low[N],high[N],dp[2][M];boolpipe[N];intmain(){ intn,m,k; scanf("%d%d%d",&n......
  • RPN FPN ROIPooling
    RPN(RegionProposalNetwork)介绍--->特点从backbone生成的FetureMap中用一个3x3的Conv卷积核遍历FeatureMap的每个点然后根据每个点的感受野,回到最初始的图像层,感受野的中心点就是锚框中心点,然后在中心点生成3种不同大小不同长宽比的锚框,然后根据卷积的结果对生成的锚框......
  • IOI游记
    IOI游记day1来到考场,励志AKIOI1min把题看完1.01minACT11.011minACT21.05minACT3day2第二天真简单,我直接秒掉所有题,因为我太强了,就不详细写了。总结100+100+100+100+100+100=600我真是太强了!......
  • OI Tricks
    记录一些见到的感觉很有用的tricks。平均值对于和的平均值(形式化地,\(\bara=\dfrac{\sum_{i=1}^na_i}{n}\)),可以转化成\(a_i-\bara\)然后和\(0\)乱搞。异或哈希就是xorhash,可以在CF上找到详细教程:Link。主要用于只关心元素集而不关心顺序的时候。(可能......
  • OI Tricks
    记录一些见到的感觉很有用的tricks。平均值对于和的平均值(形式化地,\(\bara=\dfrac{\sum_{i=1}^na_i}{n}\)),可以转化成\(a_i-\bara\)然后和\(0\)乱搞。异或哈希就是xorhash,可以在CF上找到详细教程:Link。主要用于只关心元素集而不关心顺序的时候。(可能......
  • 解决adb connect 连接Android设备报错:由于目标计算机积极拒绝,无法连接
    1.手机打开开发者模式,然后打开USB调试2.使用USB数据线连接手机和电脑3.在PC端打开cmd命令窗口,输入adbdevices,可以看到已经连接的设备4.输入adbtcpip8888(设置端口号为8888)5.断开手机和电脑的连接adbconnectIP ......
  • Solution -「JOISC 2020」建筑装饰 4
      朴素的DP形式是定义\(f_{i,j,A/B}\)表示前\(i\)个元素选择了\(j\)个\(A\)的可达性.\(\mathcalO(n^2)\).交换状态与值域,定义\(f_{i,A/B,A/B}\)表示前\(i\)个元素中的最后一个元素(即\(i\))选择了\(A/B\),在最大化\(A/B\)的数量的目标下求得的\(......