首页 > 其他分享 >P4042 [AHOI2014/JSOI2014] 骑士游戏

P4042 [AHOI2014/JSOI2014] 骑士游戏

时间:2023-09-08 19:34:46浏览次数:42  
标签:这个 JSOI2014 AHOI2014 更新 dijkstra 复杂度 P4042 我们 dp

原题

非常好的一道题,用到了一个重要的思路:消除\(dp\)的后效性

不要觉得这个东西很恐怖,其实这个东西并不复杂,只是名字有点吓人

我们容易想到对把原题抽象成一个图,我们容易想到如果该图为\(DAG\)我们要怎么做,直接拓扑上\(dp\)即可

但回到原题,我们发现\(dp\)就有了一些问题:这个题是有环的,我们对于一个环上的\(dp\)我们无法知道先更新哪一个值,换言之这个\(dp\)是有后效性的。

但我们同时也想到在这个环上一直绕,对答案来说一定是不优的(这里只是感性理解),但我们并不知道这个绕的策略是什么,因此这个问题让我们很难办

这里有一个重要的思路:消除\(dp\)后效性的方法:

  1. 先计算部分信息,再通过其他的\(dp\)加加减减,合并到当前信息去:换根\(dp\)就是这个思路

  2. 如果对于一个\(dp\)出现如果\(dp_u\)更新\(dp_v\),则\(dp_v\)更新\(dp_u\)绝对不优,则我们改变\(dp\)顺序,再直接\(dp\)

这题用的是第二个思路

我们写出\(dp\)柿子,设\(dp_u\)表示杀死\(u\)点怪兽消耗的最少体力值:

容易得到递推:

\[dp_u = \min{(K_u, S_u + \sum_{i=1}^{R_u}{dp_{v_i}})} \]

我们发现什么,我们发现后面这个柿子就满足第二个方法,因为如果存在\(dp_{v_i} \leq dp_{u}\),则我们一定不会用\(dp_{v_i}\)来更新

因此我们让\(dp_u\)值初始为\(S_u\),并把所有\(K_u\)的值放到一个堆中,每次用最小的\(dp_u\)值去更新所有指向他的点的、满足\(dp_u \leq dp_v\)的\(dp\)值。如果有一个点的\(dp\)值被更新完了,就把\(dp_u\)放到堆中。这个做法是正确的

  1. 如果在\(dp_u\)更新完之前使用了\(K_u\)更新其他的点,则说明更新\(dp_u\)一定要用到\(\geq K_u\)的\(dp\)值的点来更新,因此\(K_u < dp_u\),用\(dp_u\)更新一定不优

  2. 如果在\(dp_u\)更新完后放到了堆中,但使用了\(K_u\)更新其他的点,则说明\(K_u \leq dp_u\),同理

  3. 如果在\(dp_u\)更新完后放入了堆中,且使用了\(dp_u\)更新其他的点,则说明\(K_u \geq dp_u\),这么做也是不劣的

通过这三种情况,就可以说明这个做法是正确的

最终复杂度\(O(nlogn + \sum{R_i})\)

\(p.s.\),其实这个思路就是跑\(dijkstra\),在上面\(dp\)是同一个思路,但\(dijkstra\)的朴素复杂度为\(O(mlogm)\),但这个题可以保证每个点只在堆中出现一次,因此复杂度可以在包括\(n\)的复杂度

\(p.s.s\),感谢\(xjk\)提供的解答,使用\(dijkstra\)上跑\(dp\)的前提是这个\(dp\)是有贪心性质的,否则需要使用\(spfa\)。,如这题如果把\(S_u + \sum{dp_{v_i}}\)改成\(S_u + \min{dp_{v_i}}\),这样\(dijkstra\)显然就不太可做了。

\(p.s.s.s\),此题中也有部分题解写\(spfa\)做法(而且还能过?),参考这里

标签:这个,JSOI2014,AHOI2014,更新,dijkstra,复杂度,P4042,我们,dp
From: https://www.cnblogs.com/fox-konata/p/17688397.html

相关文章

  • P4039 [AHOI2014/JSOI2014] 拼图
    DescriptionJYY最近迷上了拼图游戏。作为一个计算机科学家,JYY有一套黑白色的拼图,他希望通过合理的拼接,使得拼出的最终图案中,能包含面积最大的全白色子矩形。JYY一共有\(S\)块拼图,并且由\(1\)到\(S\)编号。编号为\(i\)的拼图是一个\(N\)行的方格矩形,每个方格都为黑色......
  • [AHOI2014/JSOI2014] 骑士游戏
    [AHOI2014/JSOI2014]骑士游戏观察性质:对于一类怪兽,要么全部使用普通攻击,要么全部使用魔法攻击。若对怪兽\(i\)满足\(s_i>k_i\),则必使用魔法攻击。若按照怪兽的生成关系连有向边建图,则一个环内\(k\)值最小的怪兽必使用魔法攻击。注意到,如果我们已经确定了完全消灭一......
  • [JZOJ3864]【JSOI2014】歌剧表演
    DescriptionSolution这题非常有意思。本来我想各种二进制搞一波,但我看到数据后我放弃了。。。其实这题十分的水。我们把目前分辨不出的放在同一集合。那么对于演出操作,就......
  • [AHOI2014/JSOI2014]骑士游戏
    链接:https://www.luogu.com.cn/problem/P4042题目描述:对于一个怪物\(i\),可以花费\(c_{i}\)的代价将其变为一个怪物集合,或花费\(c2_{i}\)的代价消灭他。求消灭怪物\(1\)的......
  • [AHOI2014/JSOI2014]支线剧情
    链接:https://www.luogu.com.cn/problem/P4044题目描述:给定一个\(DAG\),求若干条条路径,覆盖所有的点,并最小化路径的权值和。题解:由于图是一个\(DAG\),所以原问题可以转化......
  • [AHOI2014/JSOI2014]奇怪的计算器
    链接:https://www.luogu.com.cn/problem/P4041题目描述:给定一个数列\(a\),与常数\(L\),\(R\),实现下列四个操作:1.将所有数加\(d\)。2.将所有数减\(d\)。3.将所有数乘\(d......
  • [JSOI2014]支线剧情2
    链接:https://vjudge.net/problem/HYSBZ-5031题目描述:给定一个树形图,规定一号点为根节点。到达一个点时可以进行下列操作:\(1\).沿着一条有向边走到下一个节点。\(2\).回......
  • [AHOI2014/JSOI2014]拼图
    链接:https://www.luogu.com.cn/problem/P4039题目描述:有一些长为\(n\),宽为\(w_{i}\)的黑白色矩形,要将它们拼成一个\(n\timesm\)的大矩形,求大矩形中最大的全白子矩形的面......
  • [AHOI2014/JSOI2014]支线剧情
    链接:https://www.luogu.com.cn/problem/P4044题目描述:给定一个$DAG$,求若干条条路径,覆盖所有的点,并最小化路径的权值和。题解:由于图是一个$DAG$,所以原问题可以转化为,......
  • [AHOI2014/JSOI2014]奇怪的计算器
    链接:https://www.luogu.com.cn/problem/P4041题目描述:给定一个数列$a$,与常数$L$,$R$,实现下列四个操作:1.将所有数加$d$。2.将所有数减$d$。3.将所有数乘$d$。4.......