骑士游戏

【故事背景】
长期的宅男生活中,JYY又挖掘出了一款RPG游戏。在这个游戏中JYY会
扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽。
【问题描述】
在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻
击。两种攻击方式都会消耗JYY一些体力。采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽,注意一个怪兽可能经过若干次普通攻击后变回一个或更多同样的怪兽;而采用法术攻击则可以彻底将一个怪兽杀死。当然了,一般来说,相比普通攻击,法术攻击会消耗更多的体力值(但由于游戏系统bug,并不保证这一点)。
游戏世界中一共有N种不同的怪兽,分别由1到N编号,现在1号怪兽入
侵村庄了,JYY想知道,最少花费多少体力值才能将所有村庄中的怪兽全部杀死呢?

Input

第一行包含一个整数N。
接下来N行,每行描述一个怪兽的信息;
其中第i行包含若干个整数,前三个整数为Si,Ki和Ri,表示对于i号怪兽,
普通攻击需要消耗Si的体力,法术攻击需要消耗Ki的体力,同时i号怪兽死亡后会产生Ri个新的怪兽。表示一个新出现的怪兽编号。同一编号的怪兽可以出现多个。

Output

输出一行一个整数,表示最少需要的体力值。

Sample Input

4
4 27 3 2 3 2
3 5 1 2
1 13 2 4 2
5 6 1 2

Sample Output

26

Hint

【样例说明】
首先用消耗4点体力用普通攻击,然后出现的怪兽编号是2,2和3。花费
10点体力用法术攻击杀死两个编号为2的怪兽。剩下3号怪兽花费1点体力进
行普通攻击。此时村庄里的怪兽编号是2和4。最后花费11点体力用法术攻击
将这两只怪兽彻底杀死。一共花费的体力是4+5+5+1+5+6=26。
【数据范围】
2<=N<=2*10^5,1<=Ri,Sigma(Ri)<=10^6,1<=Ki,Si<=5*10^14
题解:
f[i]表示消灭i号怪物需要的最小花费。
我们每更新一个点A的动规值,就会有若干个点的动规值可能被更新。 
即可以分裂出点A的那些点。 
于是A出队后一旦动规值被更新了,就把那些点入队。
初始时要把所有点入队,因为它们都可能被更新
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6 #include<vector>
 7 #include<queue>
 8 #define N 200007
 9 #define ll long long
10 using namespace std;
11
12 vector<int>bc[N];//表示这个怪兽可以变成哪几个怪兽。
13 vector<int>zh[N];//表示该怪兽可以由哪几个怪兽要变成。
14
15 int n,r[N];
16 ll f[N],s[N],k[N];
17 bool ins[N];
18
19 int main()
20 {
21     scanf("%d",&n);
22     int x;
23     for (int i=1;i<=n;i++)
24     {
25         scanf("%lld%lld%d",&s[i],&k[i],&r[i]);
26         for (int j=1;j<=r[i];j++)
27         {
28             scanf("%d",&x);
29             bc[i].push_back(x);
30             zh[x].push_back(i);
31         }
32     }
33     for(int i=1;i<=n;i++)
34         f[i]=k[i];
35     queue<int>q;
36     for (int i=1;i<=n;i++)
37         q.push(i),ins[i]=1;
38     while(!q.empty())
39     {
40         int u=q.front();q.pop();
41         ins[u]=0;
42         ll sp=s[u];
43         for (int i=0;i<bc[u].size();i++)
44             sp+=f[bc[u][i]];
45         if (sp>=f[u]) continue;
46         f[u]=sp;
47         for (int i=0;i<zh[u].size();i++)
48             if (!ins[zh[u][i]])
49             {
50                 q.push(zh[u][i]);
51                 ins[zh[u][i]]=1;
52             }
53     }
54     printf("%lld\n",f[1]);
55 }

转载于:https://www.cnblogs.com/fengzhiyuan/p/7717353.html

bzoj3875 【Ahoi2014】骑士游戏 spfa处理后效性动规相关推荐

  1. 【BZOJ3875】【Ahoi2014】骑士游戏 SPFA处理有后效性动规

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

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

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

  3. Bzoj3875 [Ahoi2014]骑士游戏

    Time Limit: 30 Sec  Memory Limit: 256 MB Submit: 749  Solved: 392 Description [故事背景] 长期的宅男生活中,JYY又挖掘 ...

  4. BZOJ 3875 Ahoi2014 骑士游戏 SPFA

    题目大意:给定n个怪物,每个怪物可以用魔法直接干掉,或者用物理攻击使其分裂为一些其他怪物,求杀掉1号怪物的最小花销 令f[i]为杀死i号怪物的最小花销,则f[i]=min(k[i],s[i]+Σf[j ...

  5. BZOJ3875: [Ahoi2014]骑士游戏

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

  6. BZOJ 3875 Ahoi2014 骑士游戏

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

  7. 3875: [Ahoi2014]骑士游戏

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

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

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

  9. bzoj3875: [Ahoi2014Jsoi2014]骑士游戏(spfa+dp)

    传送门 题意简述: n n n个怪物,对于编号为 i i i的怪物可以选择用 a i a_i ai​代价将其分裂成另外的 b i b_i bi​个怪物或者用 c i c_i ci​代价直接消灭它,现在 ...

最新文章

  1. java成员变量和局部变量的初始化和内存中的运行机制
  2. 在kde中让gvim自动最大化
  3. Hadoop HBase概念学习系列之HRegion服务器(三)
  4. Business model innovation Consulting
  5. 10个加速Table Views开发的Tips
  6. js udp通信_nodejs源码分析第十九章 -- udp模块
  7. 语言怎么绘画人物肖像_绘画丨毛焰 Mao Yan 作品
  8. 关于java中equals与==的区别的小实验
  9. 面向对象之需求分析要略
  10. 水平面天文辐射网络模拟(基于ArcGIS)
  11. ubuntu下查看CPU/GPU/内存使用率
  12. 【优化求解】基于matlab遗传算法求解道路流量优化问题【含Matlab源码 1480期】
  13. Github中的缩写(PR, WIP, PTAL, TBR, TL, LGTM, SGTM, AFAIK, CC)含义
  14. Project甘特图使用方法
  15. 电脑连上手机热点后上不了网
  16. Oracle 11.2.0.4.0 安装包校验
  17. 阿里云天池龙珠计划 sql篇---stack06
  18. plotjuggler⬅ROS1/ROS2画轨迹神器➡rqt_plot+rqt_multiplot之超级加强版
  19. Kubernetes Dashboard
  20. Colly 学习笔记(二)——爬虫框架,抓取下载数据(上证A股数据下载)

热门文章

  1. 男脸型测试配发型软件,男士测脸型配发型app 百度拍照测脸型
  2. 站长SEO超级外链工具_V1.1
  3. java向上转型_Java向上转型
  4. 亚洲第六家乐高品牌旗舰店将在广州开业;趣链科技成为区块链独角兽企业;KPS将收购欧洲最大金属包装企业之一 | 美通企业周刊...
  5. “印度管理”会成为超越中国的秘密武器吗?[高度关注]
  6. Fedora 29 添加 惠普打印机 Smart Tank 531
  7. 关于微信公众号开发时获取用户昵称作为参数乱码的问题
  8. NuGet基础连接已经关闭,发送时发生错误
  9. 工商银行考试计算机知识,【必读】工商银行考试内容及复习方法
  10. mysql create table as select from_CREATE TABLE 表名 AS SELECT 语句