题目分析
题目大意:给定一个序列包含 N N N个块,每个块有一个编号和颜色。初始状态下整个序列的编号无序。每次操作可以交换两个相同颜色的块,求是否能经过有限次交换,使序列顺序递增。
思路分析:首先需要明确两个点:
- 序列中所有块的编号按照 1 1 1~ N N N编号,最终如果能够达到有序状态,则每个块的位置和编号对应相等;
- 同一颜色的块集合内部可实现任意交换,即每个块能到达任何位置;不同颜色的块无法通过任何交换方式实现块交换。
因此,我们只需要对数据排序,判断排序前位置为 i i i的块和排序后位置为 i i i的块颜色是否相同,如果出现不同的,则一定不能交换到该位置。
Accepted Code#include
using namespace std;
const int N = 1e5 + 10;
struct node{
int ser, cor;
const bool operator n >> k;
for(int i = 1; i > node[i].ser >> node[i].cor;
ori[i] = node[i].cor;
}
sort(node + 1, node + 1 + n);
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脚手架写一个简单的页面?