[BZOJ 1562] 变换序列】的更多相关文章

Link: BZOJ 1562 传送门 Solution: 一道比较考对$Hungry$算法理解的题目 首先可以轻松看出原序列和答案序列的对应关系,从而建出二分图匹配模型 下面的关键在于如何保证字典序最小 第一种方式是暴力逐位确定: 对于$1....n$每一位都先贪心选取字典序小的节点,判断将该边除去后能否完全匹配,不能再修改 但这样复杂度明显是$O(n^3)$ 第二种方式是逆向匹配: 其实就是暴力贪心的思想,但逆序匹配后就不用判断了,省去了每次重复的判断: 从后往前对于每个点先选择字典序小的节…
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目大意: 思路: 逆序匹配,加边匹配的时候保持字典序小的先加入. 具体证明:https://www.byvoid.com/zhs/blog/noi-2009-transform #include<bits/stdc++.h> #define IOS ios::sync_with_stdio(false);//不可再使用scanf printf #define Max(a,…
显然每个位置只有两个情况,所以用二分图最大匹配来求解. 如果二分图有完全匹配,则有解. 关键是如何求最小的字典序解. 实际上用匈牙利算法从后面开始找增广路,并优先匹配字典序小的即可. # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include…
题目: http://cojs.tk/cogs/problem/problem.php?pid=409 409. [NOI2009]变换序列 ★★☆   输入文件:transform.in   输出文件:transform.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]        对于N个整数0, 1, ……, N-1,一个变换序列T可以将i变成Ti,其中 定义x和y之间的距离.给定每个i和Ti之间的距离D(i,Ti), 你需要求出一个满足要求的变换序列T.如…
[NOI2009] 变换序列 [题解] 就是有一个序列,每个位置可以填两个数,不可重复,问最小字典序. 显然,可以建一个二分图,判合法就是找完美匹配. 那怎么弄最小字典序呢?有好多种解法,我这里给出了两种. 解法一: 先求出它的一个完美匹配,把每个点扫一遍,如果它连的点是它能连的最小的了,就不管他,否则强制将当前节点与其能连的最小点对应,这时从这个点找增广路,如果有,就算修正成功,否则修正失败. 这个方法的好处是通用,时间复杂度O(n*n) 解法二: 从最后一个点开始求增广路,求增广路时优先考虑…
http://www.lydsy.com/JudgeOnline/problem.php?id=1562 (题目链接) 题意 给出一个序列(0~n-1),这个序列经过某个变换会成为另外一个序列,但是其中的元素不会改变,给出初始序列与变换后的序列每一位上的“距离”,求字典序最小的变换序列. Solution 每个位置上只有2种情况,很明显的二分图匹配.因为要求字典序最小,我们考虑匈牙利算法的运行方式,是保证当前匹配的点最优,所以连边时将字典序小的点尽可能后连,保证第一个邻接表第一个选出来的点是字典…
任意门:http://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目: 对于0,1,…,N-1的N个整数,给定一个距离序列D0,D1,…,DN-1,定义一个变换序列T0,T1,…,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,…,N-1的一个排列,任务是要求出字典序最小的那个变换序列. 题解: 二分建图是显而易见的,可是怎么处理字典序最小? 大神博客:https://www.byvoid.com/blog/noi-20…
[BZOJ1562][NOI2009]变换序列 题面 BZOJ 洛谷 这题面写的是真的丑,还是先手动翻译成人话. 让你构造一个\(0..N-1\)的排列\(T\) 使得\(Dis(i,T_i)\)为给定的值,如果有多个满足条件则输出字典序最小的那个. 其中,\(Dis(x,y)=min(|x-y|,N-|x-y|)\) 题解 这不一眼二分图匹配吗? 蛤?没了啊. #include<iostream> #include<cstdio> #include<cstdlib>…
目录 List Description Input Output Sample Input Sample Output HINT Solution 官方题解%莫队 Code Position: http://www.lydsy.com/JudgeOnline/problem.php?id=1562 List Description Input 输入文件 transform.in 的第一行包含一个整数 N,表示序列的长度.接下来的 一行包含 N 个整数 D i ,其中 D i 表示 i 和 T i…
Description 题库链接 对于 \(N\) 个整数 \(0, 1, \cdots, N-1\) ,一个变换序列 \(T\) 可以将 \(i\) 变成 \(T_i\) ,其中 \(T_i \in \{ 0,1,\cdots, N-1\}\) 且 \(\bigcup_{i=0}^{N-1} \{T_i\} = \{0,1,\cdots , N-1\}\) . \(\forall x,y \in \{0,1,\cdots , N-1\}\) ,定义 \(x\) 和 \(y\) 之间的距离 \(…