首页 > 其他分享 >Madoka and the Sixth-graders (全排列队列,每一个点可以向外连1条线题型+倍增法处理图上点转移+贪心+排序+map平衡二叉树)

Madoka and the Sixth-graders (全排列队列,每一个点可以向外连1条线题型+倍增法处理图上点转移+贪心+排序+map平衡二叉树)

时间:2022-10-23 10:44:45浏览次数:72  
标签:Madoka 一个点 Sixth 位置 图上 二叉树 编号 未知 座位

题意:

Madoka 的教室里有 nn 个座位,一开始,编号为 ii 的座位上坐着编号为 b_i(1 \le b_i \le n)bi​(1≤bi​≤n) 的同学。

门外有排成一队的,编号从 n+1n+1 开始的,无穷多的同学。

现在,每上一节课,坐在编号为 ii 的座位上的同学会移动到编号为 p_ipi​ 的座位上,所有座位的移动是同时瞬间完成的。

如果一个座位上有多个人,则只有编号最小的同学可以留在座位上,其他同学会被开除出班级。每堂课至少开除一个同学。

接着,外面的同学会依次进入教室,坐到空座位上。

在若干节课后,第 ii 个座位上坐着的同学编号为 a_iai​。

给出 a,pa,p,求字典序最小的可能的 bb。

 

思路:

  • 全排列队列,每一个点可以向外连1条线题型: 建图
  • 可以得到一个 深林图, 每一个树有一个环,环外点的方向一定指向环. (当然也可以只是一个环 (每一个点都被其他一个点所指向))
  • 就是一个树 多了一个边而已. n个边
  • 这道题就是一个 树+环, 
  • 然后找规律,发现新进来的点一定会被其他点给挤出去(他的编号比其他点大), 每一次新点冲入度为0的点进去
  • 由此可以得到轮数
  • 轮数得到,就可以知道 最初的图上的点 经过n论后 会在图上的那个位置,  这里利用倍增法处理
  • 由此可知 现在图上 id <=n 的点 会和哪些位置的点进行比较,
  • 现在问题就转化成了, 将这些已知点和未知点 放在图上使得字典序最小,
  • 首先, 贪心得将已知点放在他所占据位置的下标最靠前的位置, 因为他 一定比这些位置上的点小,才符合题意
  • 接下来就是放未知点, 由小到大得放未知点, 放在能翻的位置的下标最靠前的, 先放完已知点,在放未知点是不好处理的
  • 于是 将所有的点 由大到小放, 已知点就如上所说, 未知点就放在之前已知点所带来的位置下标最小的位置, (因为他一定比之前的点大), 这里用map处理即可

 

标签:Madoka,一个点,Sixth,位置,图上,二叉树,编号,未知,座位
From: https://www.cnblogs.com/Lamboofhome/p/16818080.html

相关文章

  • Madoka and the Best School in Russia (倍数类型题 拆分成质因子,因子考虑)
    题意:如果 nn 是 dd 的倍数,则称 nn 为“好数”;如果 nn 是“好数”且不能写成任意两个“好数”之积,则称 nn 是“美丽数”。TT 组询问,每组询问给定两个正整......
  • Madoka and Childish Pranks (贪心+逆序即可)
    题目大意: 给定一个01矩阵,其中0代表黑色,1代表白色Madoka要对一个同样大小的0矩阵染色,每次染色可以将一个矩形染成国际象棋的颜色(-1)^(x+y)的颜色(1白2黑)现......
  • 二叉树的右视图
    给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 publicList<Integer>rightSideView(TreeNoderoot){......
  • 【算法】算法题目三道模拟计算器,设计学生类和子类,二叉树开为链表
    算法题目描述算法知识点如下:模拟计算器,类型:算法初阶,比较简单。设计学生类和子类,类型:基础知识,比较简单。二叉树开展为链表,类型:栈,树,中等难度。第一题算法题目描述模拟简单的......
  • 算法与数据结构——二叉树遍历应用
    题目:  代码:#include<iostream>#include<stdlib.h>usingnamespacestd;typedefstructTreeNode{chardata;structTreeNode*lchild;struct......
  • 二叉树部分知识点
    关于满二叉树和完全二叉树:满二叉树:每个分支节点都存在左子树和右子树,且叶子节点在同一层完全二叉树:按层序编号,如果编号出现空档,则说明不是完全二叉树,反之则是 已知前......
  • 颜色二叉树
    颜色二叉树一棵节点带颜色的二叉树,每个节点除了有id值,还有一个颜色变量color。每个节点的id值不同。TreeNode类定义:classTreeNode{TreeNodeleft;TreeNoderight......
  • 全局平衡二叉树
    全局平衡二叉树,其实说白了就是在树链剖分的基础上再次对每条链以相对平衡的方法再次重构成一颗固态的二叉树的形态,或者说在LCT的基础上把Splay换成满足全局平衡的二叉......
  • 学习(二叉树中序遍历)
    1、108、将有序数组转换为二叉搜索树(重点)structTreeNode*helper(int*nums,intleft,intright){//用一个有序数组来建一个名叫helper的二叉树if(left>righ......
  • LeetCode 144 94 145 关于前中后序遍历二叉树的思考(包含迭代法)
    用系统堆栈实现(递归)很容易实现:前序:do(),递归左儿子,递归右儿子中序:递归左儿子,do(),递归右儿子后序:递归左儿子,递归右儿子,do()用自定义栈实现(迭代法)首先首......