首页 > 其他分享 >trick记录

trick记录

时间:2023-10-03 10:44:21浏览次数:37  
标签:记录 可以 trick 复杂度 最优 考虑 dp 贪心

前言

记录一下有用的trick

统计

  1. 有上下界, 并且答案和每个数位有关的不一定是数位 dp , 还可以考虑在某个地方后面的数变自由, 也就是可以随便选, 经常用在二进制中
  2. 如果是区间维护的问题, 并且这个区间会进行比较复杂的操作, 那么就可以考虑用矩阵来表示操作。
  3. 分数的操作其实可以考虑矩阵, 见[NOI2021] 密码箱
  4. 均摊的基础在于势能的变化, 所以做题时观察一些有上限并且每次操作会被改变, 且只减或增加的势能是常数的量, 如Adam and Tree就有量点向上跑的最大颜色数 \(\leq \log{n}\)
  5. 将 \(b\) 分配给 \(a\) 求最值的问题可以考虑网络流, 网络流可以和最小割相互转化, 并且其实, 最小割一般来说更容易有简单计算的方法, 如 Four Suits
  6. 二分图匹配问提可以用hall定理减少边数
  7. 如果要统计任意两点间有通过有约束(这里特指数量约束)条边的最值(长度的最大最小)或数量, 可以考虑矩阵, 如旅游路线
  8. 位运算的题一定要考虑分成一位一位能不能优化
  9. 平方数可以表示为质因数分解后每个质数的系数为偶数, 所以乘积为平方数的关系是有传递性的, 即 \(a \times b = x^2, b \times c = y^2 \Rightarrow a \times c = z^2 (a, b, c, x, y, z \in Z)\)
  10. 如果某一个量他的和是一个约小于 \(1\times10^5\) 的量, 那么可以考虑根号分治
  11. 对于某些实在只会比较暴力做法的题, 可以多想几个时间复杂度无法通过但时间复杂度表达式不同的做法, 也许可以通过根号分治平衡复杂度。
  12. 一道题如果是有编号的点建树(或者树形结构), 那么就要想到prufer序列
  13. 有些时候贪心策略无法满足需求的原因是贪心策略只是当前类别抉择的最优, 而不是题目限制下的最优(如背包问题, 贪心的抉择得到的结果是当前贪心出来的物体总体积的最优, 而不是 \(m\) 体积限制下的最优), 那么有时候限制很大的时候, 贪心在大部分情况下最优, 只有最后的小部分无法达到最优, 就可以先考虑贪心缩小范围, 再进行 dp , 如Topcoder 13859 ClassicProblem
  14. 如果一个问题是问的进行一种操作, 问在进行某轮(一般较大)操作后的结果, 这种题不是通式就是在某一步后有循环, 如[CCO2021] Through Another Maze Darkly
  15. 一个问题如果和 \(\gcd()\) 有关, 且可以转化成 \([gcd() = k]\) 的式子, 那么就要想到莫比乌斯反演, 核心式子是 \(\sum\limits_{i | x} \mu(i) = [x == 1]\) , 一般来说用到的是 \([gcd(x, y) = 1] = \sum\limits_{i | x, y} \mu(i)\)
  16. 有时候 dp 的状态数很多, 那么不要急着考虑优化状态, 可以想一想能否将一些状态合成一个, 这些状态可能有通式或相同的值, 如CF1894 H Asterism Stream
  17. 树上点对的最长距离有几种方法, 如树分治(可能是点分也可能是边分), 建虚树然后对每个点考虑其为 \(lca\) 时的答案, 合并两个点集(总点集的最长链的两端点只可能是两个点集中最长链的两端点四选二得来)等。 有一些恶心的题, 需要这些方法嵌套, 如 [WC2018] 通道Twin Binary Trees

标签:记录,可以,trick,复杂度,最优,考虑,dp,贪心
From: https://www.cnblogs.com/flower-dream/p/17739275.html

相关文章

  • 基于Java的高校学生综合测评管理系统的设计与实现(亮点:选课、课程评分、各类活动申请
    (高校学生综合测评管理系统)二、我的优势2.1自己的网站网站上传的项目均为博主自己收集和开发的,质量都可以得到保障,适合自己懂一点程序开发的同学使用!2.2自己的小程序(小蔡coding)<imgsrc="https://img-blog.csdnimg.cn/img_convert/3df3eff92652bb0959df5e3d738d05c9.png"......
  • C语言学习记录---数组3---三子棋
    头文件game.h#include<stdio.h>#include<stdlib.h>#include<time.h>#defineROW3#defineCOL3//直接通过头文件修改行列数voidInitBoard(charboard[ROW][COL],introw,intcol);voidDisplayBoard(charboard[ROW][COL],introw,intcol);voidPlayerm......
  • C:\Windows\Panther\UnattendGC\setupact.txt是Windows系统安装过程中的一个日志
    C:\Windows\Panther\UnattendGC\setupact.txt是Windows系统安装过程中的一个日志文件,用于记录系统安装过程中发生的事件和错误。它通常会包含有关安装过程中各个阶段的详细信息,例如硬件检测、驱动程序安装、应用程序安装等等。如果您遇到了系统安装问题,可以查看这个文件以获取更多......
  • Windows系统相关无响应(记录)
    开机很慢,按任何win快捷键都呼不出窗口,包括win+r、win+x、win(重启也没用);但桌面应用能正常开,.bat也可以照常执行,右键壁纸也可以出现界面(但点控制面板有关直接报错)这直接给我人淦懵了(我大部分软件都是靠按win搜索开的,所以cmd也开不开)但在我用edge找资料的时候就莫名其妙的好......
  • 解析用户消费记录(数据分析三剑客综合使用)
    博客地址:https://www.cnblogs.com/zylyehuo/开发环境anaconda集成环境:集成好了数据分析和机器学习中所需要的全部环境安装目录不可以有中文和特殊符号jupyteranaconda提供的一个基于浏览器的可视化开发工具importnumpyasnpimportpandasaspdfrompanda......
  • 2023.10.1记录
    被NOIP提高组的题暴虐。[NOIP2000提高组]方格取数NOIP2000提高组]方格取数-洛谷|计算机科学教育新生态(luogu.com.cn)题意从一个\(n\timesn\)的矩阵的左上角走到右下角,只能往右边和下边走,选择两条路,把这两条路经过的单位的数字取走,每个单位的数字只能取一次,求最大能......
  • C语言学习记录---数组2
    3.数组越界数组的下标是有范围限制的。数组的下规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。所以数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味......
  • Oracle数据库升级PostgreSQL 后的踩坑记录(一)之databaseId
    背景:因为业务需求,需要整个项目除了适配oracle和mysql后还需要适配PostgreSQL,在此背景下就出现了一系列的问题。踩坑一:databaseId连接数据库后启动发现某些查询报错传入的sql参数是空,经过反复排查定位到对应的MyBaits的xml文件,我贴出原始的文件文件中判断databaseid是mysql还是oracl......
  • Spring Boot 将日志写入文件中记录
    一、介绍我们之前的一套操作来讲,日志都是在控制台上的但,如果你的项目在正式环境上跑,运维人员突然告诉你说日志报错了,但你日志只在控制台上,那公司项目如果访问量很大那你是很难在控制台上找到某一条日志的。这时,我们就可以用文件把它记下来。这样就好啦,然后我们直接启......
  • C语言学习记录---数组1
    BIT-4-数组一维数组的创建和初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用二维数组在内存中的存储数组越界数组作为函数参数数组的应用实例1:三子棋数组的应用实例2:扫雷游戏1.一维数组的创建和初始化。1.1数组的创建数组是一组相同类型元素......