输出文件仅包含 $D$ 行,每行 $N$ 个整数,表示最优的菜肴制作顺序,或者“$Impossible!$”表示无解(不含引号)。
题目名称 | 1958. [HNOI 2015]菜肴制作 |
---|---|
输入输出 | dishes.in/out |
难度等级 | ★★☆ |
时间限制 | 2000 ms (2 s) |
内存限制 | 512 MiB |
测试数据 | 20 |
题目来源 | cstdio 于2015-04-27加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:76, 提交:153, 通过率:49.67% | ||||
TAT | 100 | 0.292 s | 7.15 MiB | C++ |
Youngsc | 100 | 0.335 s | 0.56 MiB | C++ |
ZRQ | 100 | 0.350 s | 2.79 MiB | C++ |
~玖湫~ | 100 | 0.375 s | 1.24 MiB | C++ |
chenhongkan | 100 | 0.394 s | 2.22 MiB | C++ |
ZXCVBNM_1 | 100 | 0.395 s | 2.60 MiB | C++ |
BaDBoY | 100 | 0.397 s | 1.08 MiB | C++ |
Hzoi_Mafia | 100 | 0.400 s | 0.78 MiB | C++ |
BaDBoY | 100 | 0.400 s | 0.92 MiB | C++ |
Gintoki | 100 | 0.403 s | 3.34 MiB | C++ |
本题关联比赛 | |||
EYOI与SBOI开学欢乐赛8th |
关于 菜肴制作 的近10条评论(全部评论) | ||||
---|---|---|---|---|
回复 @하루Kiev :
%dalao
Hzoi_QTY
2017-08-23 16:05
6楼
| ||||
这么简单?
하루Kiev
2017-08-12 16:14
5楼
| ||||
正解是反着来的,用大根堆,逆向建边,而最后反向输出!!!如果正着找,可能会忽略后面的更小值,而更小值优先级大于当前较小值,错解。而如果反向找最大,最小的一定找到的较后,而最大值被忽略,但最大值的优先级小于较大值,那么最大值被忽略就是可以的。所以证明反向是对的。
| ||||
| ||||
回复 @呵呵酵母菌 :
MDZZ
Hallmeow
2017-08-11 16:35
2楼
| ||||
终于没人说话了
呵呵酵母菌
2017-08-11 15:33
1楼
|
知名美食家小 $A$ 被邀请至 $ATM$ 大酒店,为其品评菜肴。
$ATM$ 酒店为小 $A$ 准备了 $N$ 道菜肴,酒店按照为菜肴预估的质量从高到低给予 $1$ 到 $N$ 的顺序编号,预估质量最高的菜肴编号为 $1$。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 $M$ 条形如“$i$ 号菜肴‘必须’先于 $j$ 号菜肴制作”的限制,我们将这样的限制简写为$<i,j>$。
现在,酒店希望能求出一个最优的菜肴的制作顺序,使得小 $A$ 能尽量先吃到质量高的菜肴,也就是说:
$(1)$在满足所有限制的前提下,$1$ 号菜肴“尽量”优先制作;
$(2)$在满足所有限制,$1$ 号菜肴“尽量”优先制作的前提下,$2$号菜肴“尽量”优先制作;
$(3)$在满足所有限制,$1$ 号和 $2$ 号菜肴“尽量”优先的前提下,$3$ 号菜肴“尽量”优先制作;
$(4)$在满足所有限制,$1$ 号和 $2$ 号和 $3$ 号菜肴“尽量”优先的前提下,$4$ 号菜肴“尽量”优先制作;
$(5)$以此类推。
例$1$:共 $4$ 道菜肴,两条限制$<3,1>、<4,1>$,那么制作顺序是 $3,4,1,2$。例$2$:共 $5$ 道菜肴,两条限制$<5,2>、 <4,3>$,那么制作顺序是 $1,5,2,4,3$。
例$1$里,首先考虑 $1$,因为有限制$<3,1>$和$<4,1>$,所以只有制作完 $3$ 和 $4$ 后才能制作 $1$,而根据$(3)$,$3$ 号又应“尽量”比 $4$ 号优先,所以当前可确定前三道菜的制作顺序是 $3,4,1$;接下来考虑$2$,确定最终的制作顺序是 $3,4,1,2$。例 $2$ 里,首先制作 $1$ 是不违背限制的;接下来考虑 $2$ 时有$<5,2>$的限制,所以接下来先制作 $5$ 再制作 $2$;接下来考虑 $3$ 时有$<4,3>$的限制,所以接下来先制作 $4$ 再制作 $3$,从而最终的顺序是 $1,5,2,4,3$。
现在你需要求出这个最优的菜肴制作顺序。
无解输出“$Impossible!$” (不含引号,首字母大写,其余字母小写)
第一行是一个正整数 $D$,表示数据组数;
接下来是 $D$ 组数据,对于每组数据:
第一行两个用空格分开的正整数 $N$ 和 $M$,分别表示菜肴数目和制作顺序限制的条目数。
接下来 $M$ 行,每行两个正整数$x,y$,表示“$x$ 号菜肴必须先于 $y$ 号菜肴制作”的限制。
(注意:$M$ 条限制中可能存在完全相同的限制)
输出文件仅包含 $D$ 行,每行 $N$ 个整数,表示最优的菜肴制作顺序,或者“$Impossible!$”表示无解(不含引号)。
3 5 4 5 4 5 3 4 2 3 2 3 3 1 2 2 3 3 1 5 2 5 2 4 3
1 5 3 4 2 Impossible! 1 5 2 4 3
第二组数据同时要求菜肴 $1$ 先于菜肴 $2$ 制作,菜肴 $2$ 先于菜肴 $3$ 制作,菜肴 $3$ 先于菜肴 $1$ 制作,而这是无论如何也不可能满足的,从而导致无解。
$30 \%$的数据满足 $N,M<=200,D<=3$;
$70 \%$的数据满足$N,M<=5000,D<=3$;
$100 \%$的数据满足$N,M<=100000,D<=3$。