首页 > TAG信息列表 > P3243
洛谷P3243 [HNOI2015]菜肴制作 (拓扑排序/贪心)
这道题的贪心思路可真是很难证明啊...... 对于<i,j>的限制(i必须在j之前),容易想到topsort,每次在入度为0的点中选取最小的。但这种正向找是错误的,题目要求的是小的节点尽量往前,并不是字典序最小。<i,j>中i肯定大于j,这样建的图中小的节点是靠后的,当然不行;那我们考虑反向建图,那么小的节P3243 [HNOI2015]菜肴制作
题面 知名美食家小 A 被邀请至 ATM 大酒店,为其品评菜肴。ATM 酒店为小 A 准备了 \(n\) 道菜肴,酒店按照为菜肴预估的质量从高到低给予 \(1\) 到 \(n\) 的顺序编号,预估质量最高的菜肴编号为 \(1\)。 由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 \(m\)菜肴制作(洛谷P3243)
菜肴制作 传送门 本题思路 看到题目,可以想到 拓扑排序 。但是如果要求字典序最小的排列,那就错了。 可以举出反例: 4 4 4 种菜肴,限制为 <[P3243] 菜肴制作
问题描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1。 由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如”i 号菜肴'必须'洛谷 P3243 [HNOI2015] 菜肴制作
题目描述 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴。 ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予1到N的顺序编号,预估质量最高的菜肴编号为1。 由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 M 条形如”i 号菜肴'必须Luogu P3243 [HNOI2015]菜肴制作
题目 题目要求的顺序很像是字典序最小,不过并不是,所以不能够直接跑最小拓扑序。 不过我们可以发现这个顺序实际上就是反向图上最大拓扑序的reverse。 对于限制\(u,v\),我们建\(v->u\)这样一条边。 然后开个堆跑最大拓扑序。 判断一下是否无解,然后反向输出即可。 #include<bits/stdLuogu P3243 菜肴制作
Luogu P3243 菜肴制作 神神奇奇的拓扑排序,也就是借这道题学习一下大名鼎鼎的Toposort了…… #include<bits/stdc++.h> #define N 100010 using namespace std; int d,n,m,cnt,tot; int in[N],ans[N],head[N]; struct node { int nxt,to; }edge[N]; void addEdge(int u,int