BZOJ 1562 變換序列

2022-08-05 04:09:15 字數 682 閱讀 7560

二分圖匹配

要求字典序最小

匈牙利演算法

自n-1至0嘗試匹配

先嘗試小數,這個通過加邊順序控制

這樣高優先權位置只有在不可行時才取大數

#include using namespace std;

const int maxn=11111;

int n;

int d[maxn];

int f[maxn], if[maxn];

int norm(int k)

struct vert v[maxn];

struct edge e[maxn<<1];

int ecnt=0;

void adde(int a, int b)

int dfn=0;

bool dfs(int at)

} return false;

}void show()

for(int i=0;i=0;--i)

//show(); }

//cout << cnt << endl;

if(cnt==n)

else cout << "no answer" << endl;

return 0;}/*

51 1 2 2 1

1 2 4 0 3

*/

BZOJ 1562 變換序列

bzoj 1562 傳送門 一道比較考對 hungry 演算法理解的題目 首先可以輕鬆看出原序列和答案序列的對應關係,從而建出二分圖匹配模型 下面的關鍵在於如何保證字典序最小 第一種方式是暴力逐位確定 對於 1.n 每一位都先貪心選取字典序小的節點,判斷將該邊除去後能否完全匹配,不能再修改 但這樣複...

NOI2009 bzoj1562 變換序列

可以把距離看成每個點都有兩個匹配點,這樣就是求字典序最小的二分圖匹配。先任意求出乙個,然後從小到大考慮每個點,嘗試更換他的匹配點,但是要求不能改動之前的匹配。include include using namespace std const int maxn 10010 int a maxn fir...

BZOJ1562 NOI2009 變換序列

1 題意 題意有些難理解 2 分析 我們發現如果要求判斷是否合法的話就so easy了,二分圖匹配即可,但是我們發現要求輸出字典序最小的,那麼我們在匈牙利的時候就倒著列舉,另外鄰接表中的邊一定要排好序,如果用的是鍊錶的話,就從大到小,vector就從小到大插入,然後我們就可以保證字典序最小了,想了半...