以前看到过类似的最短路,就是已知一个集合(称为S),在这个集合全部得到后经过t的时间可以得到另一个集合(称为T),求从一个物品得到另外一个物品的最短时间。不妨先看一下这个类似的问题:

在这个问题中,用bellman-ford,看S能否更新T中的某一个,直到不能更新就终止。

那么同样在这个问题中,首先定义d[i]的初值为法术杀死i的时间,d[i]的终值为杀死i(及其产生的新怪物)的最快时间。那么如果所有i的前驱(杀死i产生的新怪物)的和<d[i],就更新i,然后更新所有i的后驱(杀死它后会产生i的怪物),将所有的后驱加入队列(没错就是一个spfa)。

然后就好了。

AC代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#define N 200005
#define M 1000005
#define ll long long
using namespace std;int n,tot,fst[N],pnt[M],nxt[M],h[M+5]; bool bo[N];
ll a[N],d[N],sum[N];
int read(){int x=0; char ch=getchar();while (ch<'0' || ch>'9') ch=getchar();while (ch>='0' && ch<='9'){ x=x*10+ch-'0'; ch=getchar(); }return x;
}
void add(int x,int y){pnt[++tot]=y; nxt[tot]=fst[x]; fst[x]=tot;
}
int main(){n=read(); int i;for (i=1; i<=n; i++){scanf("%lld%lld",&a[i],&d[i]); int cnt=read();while (cnt--){int x=read(); add(x,i);}}int head=0,tail=n;for (i=1; i<=n; i++){h[i]=i; int p;for (p=fst[i]; p; p=nxt[p]) sum[pnt[p]]+=d[i];}while (head!=tail){head=head%M+1;int x=h[head]; ll tmp=sum[x]+a[x]-d[x]; bo[x]=1;if (tmp<0){d[x]+=tmp; int p;for (p=fst[x]; p; p=nxt[p]){int y=pnt[p]; sum[y]+=tmp;if (bo[y]){ bo[y]=0; tail=tail%M+1; h[tail]=y; }}}}printf("%lld\n",d[1]);return 0;
}

by lych

2016.3.8

bzoj3875 骑士游戏 最短路相关推荐

  1. 【BZOJ3875】[Ahoi2014Jsoi2014]骑士游戏 SPFA优化DP

    [BZOJ3875][Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会扮演一个英勇的骑 ...

  2. bzoj3875: [Ahoi2014Jsoi2014]骑士游戏 spfa处理有后效性动规

    bzoj3875: [Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的 ...

  3. bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规

    骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...

  4. 新千题计划 2#:[AHOI JSOI14] 骑士游戏

    骑士游戏[难度:NOIP D2T1]有 nn<script type="math/tex" id="MathJax-Element-3">n< ...

  5. BZOJ 3875 Ahoi2014 骑士游戏

    3875: [Ahoi2014]骑士游戏 Time Limit: 30 Sec  Memory Limit: 256 MB Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款 ...

  6. 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    洛谷P4042[AHOI2014/JSOI2014]骑士游戏\color{#00F}{洛谷\ P4042\ [AHOI2014/JSOI2014]骑士游戏}洛谷 P4042 [AHOI2014/JSO ...

  7. 3875: [Ahoi2014]骑士游戏

    3875: [Ahoi2014]骑士游戏 Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 599  Solved: 319 [Submit][Stat ...

  8. BZOJ 3875: [Ahoi2014Jsoi2014]骑士游戏 dp spfa

    3875: [Ahoi2014&Jsoi2014]骑士游戏 Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 933  Solved: 475 ...

  9. 【ECNU OJ 3373】 骑士游戏 最短路径+动态规划

    Problem 3373 骑士游戏 长期的宅男生活中,JYY 又挖掘出了一款 RPG 游戏.在这个游戏中 JYY 会扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. 在这个游戏中,JYY 一共 ...

最新文章

  1. AprilTag程序的获取
  2. Mongodb异常关闭重启失败解决
  3. lintcode-102-带环链表
  4. 谓词::不适合Java
  5. java 拟合曲线_如何通过指数曲线拟合数据
  6. 机器学习笔记(一)----基本概念
  7. 解決win7打开EXE文件总是出现安全警告
  8. 智能垃圾桶(七)——SG90舵机的介绍与使用(树莓派pico实现)
  9. H3CNE中Vlan间路由
  10. 「 C++ TwinCAT3 」倍福 “多轴开放体系软件结构设计”讲解
  11. 班德瑞1-9,神秘园1-4全集下载
  12. Smart-doc的脚本生成在线文档(精简官方文档描述)
  13. 万字长文,一文讲透!终于有人把商业智能(BI)讲清楚了
  14. jquery管理数据
  15. WOW副本任务制作方法
  16. 【设计模式·Python】创建型模式
  17. Anchor Free检测算法之FCOS
  18. 无法打开kernel32.lib
  19. 快速幂算法 超详细教程
  20. 高端喷绘的基本知识和经验

热门文章

  1. ffmpeg截取视频片段的两种方式 1) 按时间截取 2)按帧数截取
  2. Saruman's Army
  3. Python实现淘宝爬取——奶粉销售信息爬取及其数据可视化
  4. csp试题1:小明种苹果
  5. 新华网:数字藏品“加速器” 助力非遗传古通今
  6. 以智慧校园为起点 西电携手新华三发掘信息化价值
  7. (AAAI-2019)STA:用于大规模基于视频的行人重识别的时空注意力
  8. 金蝶K3案例教程应收账款前台操作
  9. java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...
  10. linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份