算法竞赛一句话解题经典问题分析 ©ntsc 2024

2024-06-10 00:36

本文主要是介绍算法竞赛一句话解题经典问题分析 ©ntsc 2024,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原名:算法竞赛一句话解题&经典问题分析 ©ntsc 2024

处理进度

  • 绿:P1381【~P(今日进度)】
  • 蓝:P1099

致CSDN网友:
本文章不定期更新!文章链接:

经典问题分析

基础知识与编程环境

  • 了解树的中序遍历的性质来设计算法→P1040

思维

  • 考虑每一个数字的贡献而不是考虑每一种情况那个数字做贡献→mna.816/p4

  • 观察数据访问,发现一个范围很小→将这个数据作为最外层循环,每次考虑这个数据取特定值时的答案的求解→P1311

  • 求最优化一个计算式,并且里面有一个值需要你来确定,并且不好直接求→二分→优化每一次计算过程→O(n)求多个询问区间内>m的数字的个数之和→先把≤m的数字赋0,然后跑前缀和,再对每个询问O(1)处理→P1314

  • 将字符串哈希后离散化→双指针,右端点不断扩散(右移),左端点贪心地缩小(右移)→P1381

STL 模板

排序算法

  • 在DAG中,更新一个点的信息如果需要先更新其来点→拓扑排序→P1038

  • 一些偏序问题(非计数类),考虑拓扑排序进行顺序确定→考虑不同情况反映在DAG中的情况→一定有序:存在n长链/错误:有环→P1347

搜索算法

  • O ( 2 40 ) O(2^{40}) O(240)的搜索→Meet in the middle

  • 数据范围小的时候可以考虑直接搜索(填表)→P1004

  • 有些时候看上去n不适合搜索(e.g. n=50),但是加上剪枝也许就是正解→剪枝优化时间复杂度的证明和计算→P1034

  • 常见数矩阵个数优化(n4变n3)→P1191

  • 结合计算性质进行剪枝→P1092

  • 枚举→P1378

图论算法

  • 应用分层图思想【模型】→P1073

  • 记录附加信息的最短路→P1078,P1144

  • 给定关系求层级数最小值→先整理出约束(e.g. A在B之上),连有向边→求最长链→拓扑排序→P1983

  • 总结出最后的图的特点→生成树→最大生成树→证明某些很难解决的情况不存在→简单解决→P1265

线性结构

集合与森林

  • 使用并查集额外维护集合信息→将集合信息统一整理至某一个集合的代表元素上去,注意清空过期的代表元素→P1196

  • 断边维护连通块个数→化断边为加边→P1197

树形结构

  • 维护树链上的信息→树上倍增,树剖

  • 维护子树信息→dfn线段树

  • 从题目中整理出树的性质→设计树形dp进行最优方案求解→P1131

  • 结合数据范围,预估复杂度→搜索→设计搜索→因为每一层只能切断一个,所以就可以对每一个节点搜索其最优的切断方式(使用回溯的数据来贪心选择)→P1041

  • 理清题意→整理出答案的几种来源/情况→对于每一种情况独立思考做法,最后组合起来→P1099←答案有两种情况:来自直径两端,来自最长的侧链。并且来自最长的侧链的那个答案只需要计算侧链端点到直径的距离即可。不需要考虑侧链+一部分直径的情况,因为如果这种情况可以作为答案,那么直径就要改了!

数据结构

  • 动态维护数字序列信息→权值线段树→P1168

  • 线段树模板→P1198,P1253

算法策略

  • 维护4指针2区间信息→莫队,将4指针拆为2指针及多个询问→P5268

字符串算法 哈希表

动态规划

  • 用“非法情况一定更劣”来消去需要考虑非法的情况→P1006

  • dp不就是枚举情况并选最优吗?→P1040

  • 断环为链→P1043,P1063

  • 题目中有明显的“合并”流程,则考虑区间dp→P1063

  • 依赖背包嗯可以看成树形dp来做,如附件数量很少则可以枚举每个主件和附件的配对情况并作为一个物品的多种情况。当遇到一个物品有多个挡位时的背包问题也可以参考本题→P1064

  • 从题目信息中构造出背包(f_{i,j})的物品(i)及两个维度(价值(f)和容量(j))→P1156,P1282

  • 考虑树形dp并考虑复杂度→P1273

  • 主要考验dp转移的设计以及dp优化→思维→P1070

  • 一开始考虑贪心→给定方案计算答案很快→不好实现,所以使用搜索(计算每一种可行情况)→使用dp实现记忆化搜索→压维优化→P1284

  • 期望dp→得出概率的计算式→使用dp求出计算式中的值并计算→本题:第i题对的概率=i-1题答案=i题答案→P1297

  • 树形dp,最大权独立集→P1352

数学与其他

初等数学

  • 总结出性质来优化枚举的复杂度→P1072

  • 要勤于推导式子→推导后得出贪心算法而不是一开始选择dp→P1080

初等数论

  • 扩展欧几里得变形与理解→P1082

  • 矩阵乘法→P1349

离散与组合数学

线性代数

高等数学

最优化

  • 博弈论→P1247

  • 舞蹈链及其变形→P1074

计算几何

信息论

这篇关于算法竞赛一句话解题经典问题分析 ©ntsc 2024的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046753

相关文章

慢sql提前分析预警和动态sql替换-Mybatis-SQL

《慢sql提前分析预警和动态sql替换-Mybatis-SQL》为防止慢SQL问题而开发的MyBatis组件,该组件能够在开发、测试阶段自动分析SQL语句,并在出现慢SQL问题时通过Ducc配置实现动... 目录背景解决思路开源方案调研设计方案详细设计使用方法1、引入依赖jar包2、配置组件XML3、核心配

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

MyBatis模糊查询报错:ParserException: not supported.pos 问题解决

《MyBatis模糊查询报错:ParserException:notsupported.pos问题解决》本文主要介绍了MyBatis模糊查询报错:ParserException:notsuppo... 目录问题描述问题根源错误SQL解析逻辑深层原因分析三种解决方案方案一:使用CONCAT函数(推荐)方案二:

Python中的Walrus运算符分析示例详解

《Python中的Walrus运算符分析示例详解》Python中的Walrus运算符(:=)是Python3.8引入的一个新特性,允许在表达式中同时赋值和返回值,它的核心作用是减少重复计算,提升代码简... 目录1. 在循环中避免重复计算2. 在条件判断中同时赋值变量3. 在列表推导式或字典推导式中简化逻辑

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Spring 中的循环引用问题解决方法

《Spring中的循环引用问题解决方法》:本文主要介绍Spring中的循环引用问题解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录什么是循环引用?循环依赖三级缓存解决循环依赖二级缓存三级缓存本章来聊聊Spring 中的循环引用问题该如何解决。这里聊

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制