bzoj3875 骑士游戏 最短路
以前看到过类似的最短路,就是已知一个集合(称为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 骑士游戏 最短路相关推荐
- 【BZOJ3875】[Ahoi2014Jsoi2014]骑士游戏 SPFA优化DP
[BZOJ3875][Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会扮演一个英勇的骑 ...
- bzoj3875: [Ahoi2014Jsoi2014]骑士游戏 spfa处理有后效性动规
bzoj3875: [Ahoi2014&Jsoi2014]骑士游戏 Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的 ...
- bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规
骑士游戏 [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会 扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻 ...
- 新千题计划 2#:[AHOI JSOI14] 骑士游戏
骑士游戏[难度:NOIP D2T1]有 nn<script type="math/tex" id="MathJax-Element-3">n< ...
- BZOJ 3875 Ahoi2014 骑士游戏
3875: [Ahoi2014]骑士游戏 Time Limit: 30 Sec Memory Limit: 256 MB Description [故事背景] 长期的宅男生活中,JYY又挖掘出了一款 ...
- 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏
洛谷P4042[AHOI2014/JSOI2014]骑士游戏\color{#00F}{洛谷\ P4042\ [AHOI2014/JSOI2014]骑士游戏}洛谷 P4042 [AHOI2014/JSO ...
- 3875: [Ahoi2014]骑士游戏
3875: [Ahoi2014]骑士游戏 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 599 Solved: 319 [Submit][Stat ...
- BZOJ 3875: [Ahoi2014Jsoi2014]骑士游戏 dp spfa
3875: [Ahoi2014&Jsoi2014]骑士游戏 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 933 Solved: 475 ...
- 【ECNU OJ 3373】 骑士游戏 最短路径+动态规划
Problem 3373 骑士游戏 长期的宅男生活中,JYY 又挖掘出了一款 RPG 游戏.在这个游戏中 JYY 会扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. 在这个游戏中,JYY 一共 ...
最新文章
- AprilTag程序的获取
- Mongodb异常关闭重启失败解决
- lintcode-102-带环链表
- 谓词::不适合Java
- java 拟合曲线_如何通过指数曲线拟合数据
- 机器学习笔记(一)----基本概念
- 解決win7打开EXE文件总是出现安全警告
- 智能垃圾桶(七)——SG90舵机的介绍与使用(树莓派pico实现)
- H3CNE中Vlan间路由
- 「 C++ TwinCAT3 」倍福 “多轴开放体系软件结构设计”讲解
- 班德瑞1-9,神秘园1-4全集下载
- Smart-doc的脚本生成在线文档(精简官方文档描述)
- 万字长文,一文讲透!终于有人把商业智能(BI)讲清楚了
- jquery管理数据
- WOW副本任务制作方法
- 【设计模式·Python】创建型模式
- Anchor Free检测算法之FCOS
- 无法打开kernel32.lib
- 快速幂算法 超详细教程
- 高端喷绘的基本知识和经验
热门文章
- ffmpeg截取视频片段的两种方式 1) 按时间截取 2)按帧数截取
- Saruman's Army
- Python实现淘宝爬取——奶粉销售信息爬取及其数据可视化
- csp试题1:小明种苹果
- 新华网:数字藏品“加速器” 助力非遗传古通今
- 以智慧校园为起点 西电携手新华三发掘信息化价值
- (AAAI-2019)STA:用于大规模基于视频的行人重识别的时空注意力
- 金蝶K3案例教程应收账款前台操作
- java设计求圆的面积周长的代码_java编程 1.设计一个求圆的面积和周长的类,要求:1计算当半径r=10和20时,圆的面积,并显示出来 、...
- linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份