[BZOJ1924/Luogu2403][Sdoi2010]所驼门王的宝藏(Tarjan,动态规划)

发布于 2018-02-20  199 次阅读


本文章由SYCstudio或本站其它作者所有,请勿擅自转载

本文链接地址:[BZOJ1924/Luogu2403][Sdoi2010]所驼门王的宝藏(Tarjan,动态规划)

Description

在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族。被族人恭称为“先知”的Alpaca L. Sotomon是这个家族的领袖,外人也称其为“所驼门王”。所驼门王毕生致力于维护家族的安定与和谐,他曾亲自率军粉碎河蟹帝国主义的野蛮侵略,为族人立下赫赫战功。所驼门王一生财宝无数,但因其生性节俭低调,他将财宝埋藏在自己设计的地下宫殿里,这也是今天Henry Curtis故事的起点。Henry是一个爱财如命的贪婪家伙,而又非常聪明,他费尽心机谋划了这次盗窃行动,破解重重机关后来到这座地下宫殿前。
整座宫殿呈矩阵状,由R×C间矩形宫室组成,其中有N间宫室里埋藏着宝藏,称作藏宝宫室。宫殿里外、相邻宫室间都由坚硬的实体墙阻隔,由一间宫室到达另一间只能通过所驼门王独创的移动方式——传送门。所驼门王为这N间藏宝宫室每间都架设了一扇传送门,没有宝藏的宫室不设传送门,所有的宫室传送门分为三种:
“横天门”:由该门可以传送到同行的任一宫室;
“纵寰门”:由该门可以传送到同列的任一宫室;
“自由门”:由该门可以传送到以该门所在宫室为中心周围8格中任一宫室(如果目标宫室存在的话)。
深谋远虑的Henry当然事先就搞到了所驼门王当年的宫殿招标册,书册上详细记录了每扇传送门所属宫室及类型。而且,虽然宫殿内外相隔,但他自行准备了一种便携式传送门,可将自己传送到殿内任意一间宫室开始寻宝,并在任意一间宫室结束后传送出宫。整座宫殿只许进出一次,且便携门无法进行宫室之间的传送。不过好在宫室内传送门的使用没有次数限制,每间宫室也可以多次出入。
现在Henry已经打开了便携门,即将选择一间宫室进入。为得到尽多宝藏,他希望安排一条路线,使走过的不同藏宝宫室尽可能多。请你告诉Henry这条路线最多行经不同藏宝宫室的数目。

Http

BZOJ
Luogu

Tag

Tarjan,动态规划

题目大意

在有向图上求一条可以经过重复点的经过点最多的路径。

解决思路

思路比较简单,首先\(Tarjan\)缩点后记录每一个缩的点的位置,然后按\(Top\)序在\(DAG\)上动态规划求出最长链。
至于实现,开始建图可以用\(Map\)的方式存下所有有用的点,对行和列分别建立虚点,前两种门就分别只与对应行和列的虚点连边,第三种门直接扫描周围八个点是否存在进行连边。这样做的话,\(Tarjan\)缩点的时候就要注意不要把虚点统计进\(Size\),需要判断一下。
然后在新图上建边,注意这里最好用\(Set\)标记一下,以防建太多的重复边。

代码

本文章由SYCstudio或本站其它作者所有,请勿擅自转载

本文链接地址:[BZOJ1924/Luogu2403][Sdoi2010]所驼门王的宝藏(Tarjan,动态规划)


HNCJ OIer