[题目大意] 对于0,1,…,N-1的N个整数,给定一个距离序列D0,D1,…,DN-1,定义一个变换序列T0,T1,…,TN-1使得每个i,Ti的环上距离等于Di.一个合法的变换序列应是0,1,…,N-1的一个排列,任务是要求出字典序最小的那个变换序列.(概括by:BYVoid) [思路] 我们意识流现象一下.平时二分图匹配我们会根据从前往后,后面的会占用前方匹配,使得前方节点需要重新匹配.所以得出结论——后面的点会连到比较小的.那么我们就可以yy出这样一个做法:把每一个点连的边从小到大排序,…
任意门: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…
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50:60%的数据中N≤500:100%的数据中N≤10000. 题解: 二分图匹配模型很显然,但是不要看到二分图就去网络流了...注意到题目要求的是字典序最小的!如果你用Dinic算法去多路增广,根本无法保证字典序,除非用EK.据说也有边增广边调整的搞法,但是这么多花式搞法,前提都是你不知道匈牙利算法!匈牙利算法是一种非…
1.题意:题意有些难理解 2.分析:我们发现如果要求判断是否合法的话就so easy了,二分图匹配即可,但是我们发现要求输出字典序最小的,那么我们在匈牙利的时候就倒着枚举,另外邻接表中的边一定要排好序,如果用的是链表的话,就从大到小,vector就从小到大插入,然后我们就可以保证字典序最小了,想了半天网络流QAQ,看了题解..匈牙利是啥都快忘记了... #include <cstdio> #include <cstdlib> #include <cstring> #in…
题目 输入格式 输出格式 输入样例 5 1 1 2 2 1 输出样例 1 2 4 0 3 提示 30%的数据中N≤50: 60%的数据中N≤500: 100%的数据中N≤10000. 题解 每个位置可以和两种数匹配,显然是一个二分图匹配问题 但要求字典序最小,我们就按字典序存边 由于在KM算法中,后来着具有更高的优先级,我们倒序匹配即可 #include<iostream> #include<cstdio> #include<cmath> #include<vec…
Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50:60%的数据中N≤500:100%的数据中N≤10000. Source 这题是二分图应该不难看出来. 对于原序列中的一个点,对应两个可匹配的点. 关键是怎么保证字典序最小 如果是暴力删边+匈牙利的话是$O(n^3)$的. 这里有两种解决方法: 1.强制让$x$号点连向字典序小的点,对失配的点重新匹配 2.将所有边按…
题目: 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.如…
P1963 [NOI2009]变换序列 题意 题目描述 对于\(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\)之间的距离\(D(x,y)=min\…
[NOI2009] 变换序列 [题解] 就是有一个序列,每个位置可以填两个数,不可重复,问最小字典序. 显然,可以建一个二分图,判合法就是找完美匹配. 那怎么弄最小字典序呢?有好多种解法,我这里给出了两种. 解法一: 先求出它的一个完美匹配,把每个点扫一遍,如果它连的点是它能连的最小的了,就不管他,否则强制将当前节点与其能连的最小点对应,这时从这个点找增广路,如果有,就算修正成功,否则修正失败. 这个方法的好处是通用,时间复杂度O(n*n) 解法二: 从最后一个点开始求增广路,求增广路时优先考虑…
[Luogu 1963] NOI2009 变换序列 先%Dalao's Blog 什么?二分图匹配?这个确定可以建图? 「没有建不成图的图论题,只有你想不出的建模方法.」 建图相当玄学,不过理解大约也那么奇怪. 题里面对D(x,y)的定义那一长句,一开始没看明白,但实际会发现是一个环,而对于每一个点u,符合给定距离的点都有且只有2个(v1 && v2),连u->v1 && u->v2. 对于链式前向星选手,连边的时候注意先连终点序号大的,这样才能保证遍历时从小到…