bzoj#P2860. [Ceoi2012] wagons

[Ceoi2012] wagons

题目描述

现在有 nn​ 个马车在铁路口等着,每个马车上有一种垃圾。我们有一些垃圾处理器,每种垃圾处理器能处理一些特定的垃圾。每天只能用一个垃圾处理器。

铁路旁边还有一个栈,nn​​​ 个马车按顺序过去,如果当前的垃圾处理器能处理他,就处理了;否则要么过一天换一个垃圾处理器,要么你可以把它放入栈中。

你每次既能处理铁路上的垃圾,也能处理栈中的垃圾……处理有顺序要求,铁路上的垃圾得按顺序处理,栈中的垃圾得按入栈顺序的逆序处理(所以才叫栈)。

每天一个垃圾处理器能处理无限垃圾。

你要处理三天垃圾,你需要通过调整三天里分别用哪种垃圾处理器,从而处理最多数目的垃圾,同时还要求三天后栈是空的。

输入格式

第一行 n,k,sn,k,s,表示 nn 个马车,有 kk 种垃圾,有 ss 种垃圾处理器。

接下来 ss​ 行,每行若干个数,表示垃圾处理器能处理的垃圾集合。每行以 0 结尾。

最后一行 nn​ 个数表示每辆马车上面的垃圾种类。

保证每种垃圾至少一种最多十种垃圾处理器能处理。

输出格式

第一行输出最多能处理多少垃圾。

第二行输出三个数,分别表示三天的的垃圾处理器。

如果第一问答案是 nn,存在两天的方案,那么要求输出两天的;如果第一问答案是 nn​,存在一天的方案,要求输出一天的;

如果存在两天的方案,第三个数字应该是 0;如果存在一天的方案,第二、三个数字应该是 0

13 5 4
1 0
4 5 0
5 3 0
2 5 0
4 5 2 5 5 4 1 1 5 4 5 3 3
11
2 1 4

数据规模与约定

对于 100%100\%​ 的数据,n2×104n\leq 2\times 10^4k,s103k,s\leq 10^3