rotate函数应用模板

例题Status - Codeforces Round 1084 (Div. 3) - Codeforcesd题

思路我们先把传送门之间的元素看出一个整体a,把传送门之外的元素看出一个整体b,那么我们先找到a中最小值,然后将这个最小值向左移动到成为第一个元素为止,当然是整体移动(rotate函数

复制代码
rotate(a.begin(),min_element(a.begin(),a.end()),a.end());

),接着在从b中找第一个大于min_element的位置,然后之间把a插入到这个位置前面就行了(insert函数

复制代码
b.insert(b.begin()+pos,a.begin(),a.end());

rotate函数:

1.模板1:把区间【最小值】移到最前面

vector<int> v;

// 最小值迭代器

auto mn_it = min_element(v.begin(), v.end());

// 旋转,最小值放开头

rotate(v.begin(), mn_it, v.end());

2.模板2:数组整体【左移 k 位】

// 左移k位模板

rotate(v.begin(), v.begin() + k, v.end());

3.模板3:局部区间旋转(只转中间一段)

// 转 [l, r) 区间,从第mid个位置开始当头

mid 位置及往后 → 搬到这段的最前面

l ~ mid-1 这一段 → 整体丢到这段的最后面

rotate(v.begin()+l, v.begin()+mid, v.begin()+r);

4.模板4:把末尾 k 个元素移到最前面(右移效果)

int k = 2;

rotate(v.begin(), v.end() - k, v.end());

相关推荐
x_yeyue2 小时前
三角形数
笔记·算法·数论·组合数学
念何架构之路3 小时前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星3 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑3 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光3 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩4 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494734 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ5 小时前
单词拆分----dp
算法
智者知已应修善业6 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机
智者知已应修善业6 小时前
【51单片机2按键控制1个敞亮LED灯闪烁和熄灭】2023-11-3
c++·经验分享·笔记·算法·51单片机