解决思维题的一些自我总结

目录

常见思维题类型

排序

区间问题

01串串

字符串串

位运算

[gcd 与 lcm](#gcd 与 lcm)

质数相关

二元组


常见思维题类型

思维题很多都可以说是贪心、但贪心种类很多,具体怎么贪,重要的还是在于积累经验吧...有些东西也很难总结,以下算是我的碎碎念....

思维题需要你去找到题目的提示信息,找到数据的特性,然后通过这些特性去推导可能的方法。

从特例入手,去推导一般,多尝试,多画图

排序

按大小排序、erase排序去重、按余数排序、按结构体排序、排序后反排序、优先队列、set

更多在于技巧吧...

区间问题

包含某个连续区间的个数 == (区间左侧元素个数 + 1) * (区间右侧元素个数 + 1)

一个数组的全部连续子区间和 → 算出每个数重复几次加和 → 每个数的权重 = (左边个数+1) * (右边个数+1)

01串串

区间翻转(翻转次数奇偶)、非递增子序列(0或1的特定位置)、双指针、动态维护、0或1个数前缀和、单调性、二分答案.....

bitset、cnt计数器、位运算

字符串串

查找、转化、移动...

bitset<52>

if ( find() == string::npos ){ }

map<string,int>mp mp[x]++

set存放对应字母位置,通过多个set的迭代器改动实现字母交换位置

位运算

' & '、' | '、' ^ '

对于位与操作(&)

与上的越多越容易变小,0 & 任何数 == 0

对于位或操作(|)

或上的越多越容易大

对于异或操作(^)

a ^ b 与( a & b 或 a | b )的比较入手、线性基、Trie树...

二进制形式、bitset

左移快速取2的幂(1<<32 == )、右移快速除2的幂(45>>2 == 45 / 4)

快速幂

取一个数的最低位------lowbit( x ) == x & -x

gcd 与 lcm

gcd(a,b) == gcd(b,a%b)

gcd(a,b) == gcd(a - b,b)

gcd(a + k,b + k) == gcd(a,b - a)

gcd(a,b) == 1,a 与 b 互质

lcm(a,b) == a * b / gcd(a,b)

lcm(a,b)* gcd(a,b) == a * b

质数相关

唯一分解定理、2是唯一偶质因数、埃氏筛、欧拉筛(判断以及统计每个数的最小质因数)

二元组

双指针、计数

map<int,int>mp ans += mp[x]++

数组内两两求差的绝对值→排序后 → 组中的每一个数都要被他后边的所有数减

sum += ( 第 i 位后边的所有数的和 ) - 第 i 位 *( 第 i 位后边数的个数 )

相关推荐
Y1nhl25 分钟前
力扣_链表_python版本
开发语言·python·算法·leetcode·链表·职场和发展
qq_4017004140 分钟前
C语言中位运算以及获取低8位和高8位、高低位合并
c语言·开发语言·算法
CoovallyAIHub44 分钟前
YOLO模型优化全攻略:从“准”到“快”,全靠这些招!
深度学习·算法·计算机视觉
闻缺陷则喜何志丹1 小时前
【BFS】 P10864 [HBCPC2024] Genshin Impact Startup Forbidden II|普及+
c++·算法·宽度优先·洛谷
MicroTech20251 小时前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
今天背单词了吗9802 小时前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
手握风云-2 小时前
优选算法的链脉之韵:链表专题
数据结构·算法·链表
Coding小公仔2 小时前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
稳兽龙2 小时前
P1098 [NOIP 2007 提高组] 字符串的展开
c++·算法·模拟
G.E.N.2 小时前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag