经验&想法记录
1.二分查找/答案 可以采用随机化l与r的方式,提高一定效率,但不稳定 emm似乎来源于hehezhou?
2.nlogn的做法与nlogn2做法近乎相同,nlogn2=2nlogn,常数忽略,但大常数也会一定程度上影响效率,甚至被卡掉
3.P1966 [NOIP2013 提高组] 火柴排队
对于一个公式,可以将它进行拆解,比如 Σ(ai-bi)^2 =Σ(ai)^2 + Σ(bi)^2 - 2Σ(aibi),
在a与b数组内容确定时,那么只需考虑 2Σ(aibi) !!!!
4.据说叶**看了《具体数学》变得十分牛
5.注意数据范围,不要开太大,会MLE!!!!!! 记CSP-2022
6.能取mod的时候尽量取,同时也要估计数据范围,决定是否取模!!!!!!
7.取mod的时候要看式子内部是否有相减等运算,防止算出负数!!!!!!
记Code-chef 2022.11.14 November Long Div4 T8(Div2 T5)
8.可以通过数组在处理时更新最优的组合情况,来贪心优化程序 CF913C Party Lemonade
9.最短路算法总结:
Dijkstra: O(n^2) 适用于 权值为非负 的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV)
BellmanFord: 适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE)
SPFA: 适用于权值有负值,且没有负圈的图的单源最短路径,论文中的复杂度O(kE),
k为每个节点进入Queue的次数,且k一般<=2,其实SPFA的最坏情况应该是O(VE).
Floyd:每对节点之间的最短路径。Floyd-Warshall算法的时间复杂度为O(n^3) ,空间复杂度为O(n^2)。
适用范围:
(1)当权值为非负时,用Dijkstra。
(2)当权值有负值,且没有负圈,则用SPFA,SPFA能检测负圈,但是不能输出负圈。
(3)当权值有负值,而且可能存在负圈,则用BellmanFord,能够检测并输出负圈。
(4)SPFA检测负环:当存在一个点入队大于等于V次,则有负环。
10.有关线段树空间到底是开4倍还是开2倍
这个取决于建树的方式
假如是自顶向下的递归建树法的话,把二叉树画出来,节点标完编号,可以发现最大的节点编号可以超过3n,原因是每个点的左右儿子编号都为2n和2*n+1,把整个二叉树补齐,最多可有4n-1个节点,4倍空间才够
而自底向上的建树方法,如猫树(zkw线段树),图画一下不难发现最多2n-1个节点,2倍空间足以
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?