Description 【故事背景】 长期的宅男生活中,JYY又挖掘出了一款RPG游戏。在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽。 【问题描述】 在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻 击。两种攻击方式都会消耗JYY一些体力。采用普通 ...
                            
                            
                                分类:
其他好文   时间:
2016-08-11 15:31:37   
                                阅读次数:
174
                             
                    
                        
                            
                            
                                【题目链接】
对于怪物u,普通攻击打死后产生的怪物为vi。设dis[u]表示打死u的最小花费,那么有
dis[u] = min{s[u] + ∑dis[vi], k[u]}
以这个为松弛条件,跑spfa就可以啦。
然而BZOJ跑了29s...变为倒数rank1
/* Telekinetic Forest Guard */
#include 
#include 
#includ...
                            
                            
                                分类:
其他好文   时间:
2016-05-12 12:14:36   
                                阅读次数:
170
                             
                    
                        
                            
                            
                                d[i]表示消灭i所需的最小体力值, d[i] = min(S[i], K[i]+Σd[x]), Σd[x]表示普通攻击而产生的其他怪兽. 因为不是DAG, 所以用个队列类似SPFA来更新答案.--------------------------------------#include<cstdio
                            
                            
                                分类:
其他好文   时间:
2016-02-03 15:24:14   
                                阅读次数:
166
                             
                    
                        
                            
                            
                                题解:
首先一个点可以分裂成多个新点,这样就有了图上动规的基础。 
即f[i]表示i点被消灭的最小代价,它可以由分裂出的点们更新。
但是这个东西有后效性,所以我们用SPFA来处理它。
spfa处理后效性动规
我们每更新一个点A的动规值,就会有若干个点的动规值可能被更新。 
即可以分裂出点A的那些点。 
于是A出队后一旦动规值被更新了,就把那些点入队。
初始时要把所有点入队,因为它们都可能...
                            
                            
                                分类:
其他好文   时间:
2015-03-03 18:37:03   
                                阅读次数:
574
                             
                    
                        
                            
                            
                                题目大意:给定n个怪物,每个怪物可以用魔法直接干掉,或者用物理攻击使其分裂为一些其他怪物,求杀掉1号怪物的最小花销
令f[i]为杀死i号怪物的最小花销,则f[i]=min(k[i],s[i]+Σf[j]) 其中j为i用物理攻击后可以分裂为的怪物
但是直接DP有后效性,因此我们用SPFA来跑这个DP即可
注意如果每次更新一个点之后都重新计算花销会T掉
改成减掉花销的差值就好了 具体写法去看代...
                            
                            
                                分类:
其他好文   时间:
2015-02-27 15:15:48   
                                阅读次数:
150
                             
                    
                        
                            
                            
                                题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3875分析:类似于spfa求最短路,设d[i]表示完全消灭i号怪物的最小花费,我们对d[]进行动态更新我们可以把问题反向:一开始所有怪物都存活,我们要找到一个怪物合成方案合成1号怪物,其中...
                            
                            
                                分类:
其他好文   时间:
2015-02-16 23:31:45   
                                阅读次数:
389