Little Sub and AA

http://acm.hznu.edu.cn/OJ/problem.php?cid=1263&pid=11

http://acm.hznu.edu.cn/OJ/problem.php?id=2590

题意:从ST,可以随着环境变化随时改变线路,有个人会在某个时候按下按钮使得和你相邻的某条边不能走,这样的事情只会发生一次。问最优策略下最坏情况的最短路径。

C++版本一

题解:

  先处理一个子问题:对于任何一条边,去掉该边后端点iT的最短路径f[i]

  T跑出一棵最短路树,因为如果边不在最短路树上,那么依然是最短路长度,否则的话,考虑将树上yfa[y]该边去掉,则是在子树中取一个点,跳横跳边再往上到根,也就是dist[x]-dist[y]+edge[x,p]+dist[p]

 

 

C++版本二

我们可以先对于每个点求出最小的dist[x]+edge[x,p]+dist[p],考虑非树边(x,p),若xz的子树内,p不在z的子树内,则该值就可以对zf产生贡献。我们枚举每一条非树边,对于(x,y),则将xlca(x,y)之下的每个点都更新掉,用树链剖分实现。然后把所有的f[i]都减去dist[i]就得到真正的f[i] 

 

  得到f之后,从TS跑最短路,但是更新答案的时候要用  max(d[x]+edge[p].w,f[edge[p].adj])来更新答案。

  意义为如果走最短路比我按按钮结束游戏要劣,那我就等着。

 

 

C++版本三

  二分答案也是另一个求解方法。

 

全部评论

相关推荐

06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务