tyvj1176: 火焰巨魔的惆怅

背景

TYVJ2月月赛第一道

巨魔家族在某天受到了其他种族的屠杀,作为一个英雄,他主动担任了断后的任务,但是,在巨魔家族整体转移过后,火焰巨魔却被困住了,他出逃的方式也只有召唤小火人这一种方式,所以请你帮助他。

描述

我们把火焰巨魔所处的位置抽象成一张有向图,他的位置就是1号点位,目的就是走到第N号点位,因为小火人会裂嘛,所以我们可以看做每走一条路,小火人的数量都会加倍,而每条路上的敌人有多强,会消耗多少小火人c[i]也会给出(c[i]为负值);当然有些时候路上也会遇到魔法泉之类的东西,这时候就可以补充一些小火人咯(c[i]为正值)。如果小火人死光了,那么火焰巨魔也就可以看做是挂了,毕竟智力型英雄就是脆啊。希望你帮助火焰巨魔用最少的初始小火人逃离这次屠杀。

输入格式

第一行两个数N(<=50000),M(<=100000)表示点位数与边数。
一下M行,每行三个数a,b,c表示a,b两点间的边权是c(|c|<=10000)

输出格式

输出仅一个整数,表示最小初始小火人数。

测试样例1

输入

5 4 
1 2 -3 
1 3 -6 
3 4 1 
4 5 -9

输出

4

备注

初始小火人为4个,到3点剩2个,到4变成5个,到5剩1个。
所以初始最少为4,更少的小火人是不足以走到5号点位的。from wsd  TYVJ月赛出题组

题解

终点开始跑最短路,不妨设到终点的最小生命为1。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<queue>
 5 #define maxn 50005
 6 #define inf 1<<29
 7 #define maxm 100005
 8 int vis[maxn],dis[maxn];
 9 int m,n,ecnt,head[maxn];
10 using namespace std;
11 struct edge{
12     int u,v,w,next;
13 }E[maxm];
14 void addedge(int u,int v,int w)
15 {
16     E[++ecnt].u=u;
17     E[ecnt].v=v;
18     E[ecnt].w=w;
19     E[ecnt].next=head[u];
20     head[u]=ecnt;
21 }
22 int cal(int x)
23 {
24     if(x%2)x++;
25     x/=2;
26     return x;
27 }
28 void spfa()
29 {
30     queue<int> q;
31     for(int i=1 ; i<=n ; ++i)
32         vis[i]=0,dis[i]=inf;
33     vis[n]=1;
34     dis[n]=1;
35     q.push(n);
36     while(!q.empty())
37     {
38         int d=q.front();q.pop();
39         vis[d]=0;
40         for(int i=head[d] ; i ; i=E[i].next )
41         {
42             int v=E[i].v;
43             int w=E[i].w;
44             int tmp=cal(dis[d]+w);
45             if(dis[v]>tmp)
46             {
47                 dis[v]=tmp;
48                 if(dis[v]<1)dis[v]=1;
49                 if(!vis[v])
50                 {
51                     vis[v]=1;
52                     q.push(v);
53                 }
54             }
55         }
56     }
57 }
58 int main()
59 {
60     int u,v,w,i;
61     scanf("%d%d",&n,&m);
62     for(int i=1 ; i<=m ; ++i)
63     {
64         scanf("%d%d%d",&u,&v,&w);
65         addedge(v,u,-w);
66     }
67     spfa();
68     printf("%d",dis[1]);
69     return 0;
70  } 
时间: 2024-11-02 23:03:07

tyvj1176: 火焰巨魔的惆怅的相关文章

Tyvj 1176 火焰巨魔的惆怅

Tyvj 1176 火焰巨魔的惆怅 背景 TYVJ2月月赛第一道 巨魔家族在某天受到了其他种族的屠杀,作为一个英雄,他主动担任了断后的任务,但是,在巨魔家族整体转移过后,火焰巨魔却被困住了,他出逃的方式也只有召唤小火人这一种方式,所以请你帮助他. 描述 我们把火焰巨魔所处的位置抽象成一张有向图,他的位置就是1号点位,目的就是走到第N号点位,因为小火人会裂嘛,所以我们可以看做每走一条路,小火人的数量都会加倍,而每条路上的敌人有多强,会消耗多少小火人c[i]也会给出(c[i]为负值):当然有些时候路

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

图论——最短路

Tyvj 1221 微子危机——战略 背景 №.3Summer联盟战前兵力战略转移. 描述 Summer的兵力分布在各个星球上,现在需要把他们全部转移到某个星球上.Summer一共拥有N个星球(1-N),你要把这N个星球上的兵力转到第M个星球上.本来每个星球之间都有星际轨道连接,但Guiolk监视了某些轨道,我们一但走上这些轨道,有可能受到他的攻击.为了安全,Summer不会走被监视的轨道.于是,只有L个星际轨道是被批准通过的.Summer的国防部想统计一下所需的最短路程(即每个星球到第M星球的

PS火焰文字制作

火焰文字制作: 最终效果 第一步: 新建图层,并输入文字(这里不做详细解说) 第二步: 右键文字图层 -->栅格化文字 第三步: 合并图层 第四步: 图像 --> 图像旋转 --> 90度(逆时针)(0) 第五步: 滤镜 --> 风格化 --> 风... 第六步: 滤镜 --> 扭曲 --> 波纹... 第七步: 图像 --> 图像旋转 --> 90度(顺时针)(9) 第八步: 图像 --> 模式 --> 灰度 第九步: 图像 -->

火焰图分析openresty性能瓶颈

注:本文操作基于CentOS 系统 准备工作 用wget从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包,然后解压../configure; make; make install 安装到目标主机:执行命令 stap -ve 'probe begin { log("hello systemtap!") exit() }' 如果提示pass 5: run completed ... 就表示安装成

Directx10 龙书笔记- 第7章课后题 实现火焰动画

火焰的图片我是没找到,找到了几张雷电的,就在d3dcoder.net 的directx10那本书代码下载的Bolt Animations for Chapter 9  里面 里面很多张图片,由于c++也是初学,一时来不及弄字符串拼接的函数. 只能定义很多个帧bmp 然后一个一个载入了 具体代码是建立在那个"crate" 例子工程, 就是那个木箱子的代码基础上. 添加的代码如下: ID3D10ShaderResourceView* mDiffusePic[9]; 我定义了一个能装9张图片

住宅与商业地产 一半海水一半火焰

楼市新的一轮调控,全国很多城市楼市行情出现波动,住宅市场出现了浓烈的观望情绪,就在住宅市场前景未卜的同时,商业地产却渐渐淡入人们的视线,众多现象表明商业地产市场仍具备投资潜力,且未来上涨空间较大.而这种形势,是否会给住宅和商业地产造成一半海水一半火焰的差距? 住宅地产与商业地产的区别 商业地产与住宅地产基本上存在以下几种区别. 从选址规划角度看,多数商业地产项目业态和功能都比住宅要复杂,对人流.物流.交通.消防.停车等诸多方面均有要求,而且功能要求满足之后,还要考虑如何满足未来商家和市场的需求.

转发 Java火焰图在Netflix的实践

为了分析不同软件或软件的不同版本使用CPU的情况,相关设计人员通常需要进行函数的堆栈性能分析.相比于定期采样获得数据的方式,利用定时中断来收集程序运行时的PC寄存器值.函数地址以及整个堆栈轨迹更加高效.目前,OProfile.gprof和SystemTap等工具都是采用该方法,给出详细的CPU使用情况报告.然而,这些工具在处理复杂的统计数据时,给出的报告往往过于繁杂.不够直观.不能直接反应分析员所需要的数据.为此,Brendan Gregg开发了专门把采样到的堆栈轨迹(Stack Trace)转

使用perf + FlameGraph生成进程火焰图

FlameGraph代码:https://github.com/cobblau/FlameGraph 使用方法 1,perf record --call-graph dwarf -p 12345 2,perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > process.svg 使用其他工具如何生成火焰图的方法在FlameGraph的Readme只有详细的介绍