题目要求每次可以选择一个不减的区间进行排序,那么显然暴力翻转不可行,那么考虑对性质进行维护。
我们考虑从小到达对每个数字进行归位操作。对于 B [ i ] B[i] B[i]而言,如果其在 A [ ] A[] A[]中的位置为 p o s pos pos,且 B [ i ] B[i] B[i]为 [ 1 , p o s ] [1, pos] [1,pos]的最小值,那么才能够进行归位操作。因为之前匹配的元素实际上已经移动到了前面,但是我们并没有实际上对 A A A序列进行修改,即所有未匹配过在 [ 1 , p o s ] [1,pos] [1,pos]这一区间的值的位置都在 B [ i ] B[i] B[i]之后了。对于已经归位的值,只需要置为无穷大即可,这样可以保证不对后面的交换产生影响。
#include
#define int long long
#define endl '\n'
const int N = 3e5 + 10;
int a[N], b[N];
namespace segmentTree{
const int INF = 1e9 + 7;
int tree[N = L) ans = std::min(ans, query(lson, L, R));
if(mid > n; segmentTree::build(1, 1, n);
for(int i = 1; i a[i], q[a[i]].emplace(i), segmentTree::update(1, 1, n, i, a[i]);
for(int i = 1; i > b[i];
for(int i = 1; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?