HNOI2015 菜餚製作 題解

2021-08-29 16:19:32 字數 1180 閱讀 8988

傳送門:[hnoi2015]菜餚製作

根據題目的描述,我們要做的首先是一步一步的分析:

這個題肯定是拓撲排序無疑,因為要求的是滿足固定條件(有向圖的連邊)的某種排列,而難點就在於如何拓撲排序。

根據題目的描述,我們首先想到的是根據字典序大小進行排序,那麼我們就舉例幾組資料來驗證一下是否正確,那麼先看下面這一組資料:

15 2

3 24 1

根據我們的猜想,資料的輸出應該是:

3 2 4 1 5

但經過分析,實際上應該是:

4 1 3 2 5

那麼就肯定不是根據字典序來進行拓撲排序了。那是根據什麼呢?

答案是根據反圖的較大字典序進行倒序輸出,這樣就可以保證最小的值盡量靠前了

**:

#include

#include

#include

#include

#include

#include

#include

#define maxn 300030

using

namespace std;

inline

intread()

while

(c<=

'9'&&c>=

'0')

return a*k;

}struct edgeedge[maxn]

;int head[maxn]

,cnt,du[maxn]

;void

add(

int x,

int y)

priority_queue <

int> torp;

int n,m,d,x,y,tot,toop[maxn]

;bool imp;

intmain()

}if(imp)

continue

;for

(int i=

1;i<=n;i++

)while

(!torp.

empty()

)}if(totfor(

int i=n;i>=

1;i--

)printf

("\n");

}return0;

}

HNOI2015 菜餚製作 題解(貪心 拓撲)

知名美食家小 a被邀請至atm 大酒店,為其品評菜餚。atm 酒店為小 a 準備了 n 道菜餚,酒店按照為菜餚預估的質量從高到低給予 1到n的順序編號,預估質量最高的菜餚編號為1。由於菜餚之間口味搭配的問題,某些菜餚必須在另一些菜餚之前製作,具體的,一共有 m 條形如 i 號菜餚 必須 先於 j 號...

拓撲排序 HNOI2015 菜餚製作

知名美食家小 a被邀請至atm 大酒店,為其品評菜餚。atm 酒店為小 a 準備了 n 道菜餚,酒店按照為菜餚預估的質量從高到低給予1到n的順序編號,預估質量最高的菜餚編號為1。由於菜餚之間口味搭配的問題,某些菜餚必須在另一些菜餚之前製作,具體的,一共有 m 條形如 i 號菜餚 必須 先於 j 號菜...

HNOI2015 菜餚製作 思想 拓撲排序

題意 求乙個拓撲序列,保證以1 n的優先順序,每個數盡量排在前面 分析 顯然求字典序最小的拓撲序有問題,字典序列由每個位置的數字決定,可是這裡有乙個1 n的優先順序,就是說盡量要保證1在前,以此類推。如果說乙個元素,圖中不存在 與它深度相同 的元素的話,那麼它在拓撲序列中的位置一定是固定的,那麼我們...