【Vijos1404】遭遇战(最短路)

题面

Vijos

题解

显然可以树状数组之类的东西维护一下\(dp\)。这里考虑一种最短路的做法。
首先对于一个区间\([l,r]\),显然可以连边\((l,r+1)\),那么最终的问题转化成了从\(S\)时刻到\(E\)时刻的最短路。发现显然并不在意一个时间可以被个线段覆盖,所以连边\((i+1,i)\),边权为\(0\)的边。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<queue>
using namespace std;
#define ll long long
#define MAX 1000000
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
struct Line{int v,next,w;}e[MAX];
int h[MAX],cnt=1;
inline void Add(int u,int v,int w){e[cnt]=(Line){v,h[u],w};h[u]=cnt++;}
int n,S,E;ll dis[MAX];
bool vis[MAX];
void SPFA()
{memset(dis,63,sizeof(dis));queue<int> Q;Q.push(S);dis[S]=0;while(!Q.empty()){int u=Q.front();Q.pop();for(int i=h[u];i;i=e[i].next){int v=e[i].v;if(dis[v]>dis[u]+e[i].w){dis[v]=dis[u]+e[i].w;if(!vis[v])Q.push(v),vis[v]=true;}}vis[u]=false;}
}
int main()
{n=read();S=read();E=read();for(int i=1;i<=n;++i){int u=read(),v=read(),w=read();Add(max(S,u),min(E+1,v+1),w);}for(int i=S;i<=E+1;++i)Add(i,i-1,0);SPFA();printf("%lld\n",dis[E+1]>=1e18?-1:dis[E+1]);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/9699174.html

【Vijos1404】遭遇战(最短路)相关推荐

  1. Vijos1404遭遇战[最短路建模]

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  2. Vijos1404 遭遇战 (SPFA)

    题意分析 看了一下题解区的dalao都是线段树+DP,然而蒟蒻看不懂. 用最短路思想直接解决这道题. 把每个人的守卫时间转换为 a-1到 b. 由于最优解会有区间相交的情况,所以要将i 与 i-1 连 ...

  3. vijos1404 遭遇战(建图spfa)

    这回要自己建图了..首先为了能连上,我们把[1,3]这种区间改记成[1,4).在图上用一条1指向4的有向边代替,边权为cost.然后为了解决覆盖的问题,即[1,3],[2,5]这种也可以满足[1,5] ...

  4. vijos1404 遭遇战

    题意: 给你一条数轴和m条线段,第i条线段覆盖区间[Li,Ri],选择它需要代价Ci.请选出代价和最小的一组线段使得区间[L,R]中的每一段都被覆盖. 这个题目其实是数据结构优化DP的一道例题.. 但 ...

  5. [vijos1404] 遭遇战(spfa)

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  6. Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  7. vijos1404:遭遇战

    背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...

  8. [DP] [1D1D优化] [树状数组] [最短路] 遭遇战 (clean)

    背景 Background 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 题目描述 Description 今天,他们在打一张叫DUSTII的地图,万恶的恐 ...

  9. 【Vijos1404】遭遇战

    题面 https://vijos.org/p/1404 题解 #include<cstdio> #include<iostream> #include<cstring&g ...

最新文章

  1. RGB与16进制颜色转换的原理
  2. linux内核 asmlinkage宏
  3. SAP 电商云 Spartacus UI 产品明细页面路由确定后,加载的是 page template
  4. java求多项式回归_多项式回归(Polynomial Regression)(附代码)
  5. [FY20 创新人才班 ASE] 第 1 次作业成绩
  6. 前端换行显示,后端返回br
  7. ROS与navigation教程——基本导航调整指南
  8. 照片打印预览正常打印空白_照片打印机怎么挑选 照片打印机的选购技巧分享 - 台式电脑...
  9. python生成器与迭代器的区别_python生成器和迭代器的区别
  10. JS获取短信验证码60秒
  11. 面试官就是这么欺负人:new Object()到底占用几个字节?
  12. pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at line xxx
  13. 计算机电缆静电,ZR-DJFPVP计算机电缆
  14. OpenCV-图像处理(06、调整图像亮度与对比度)
  15. Easy DVD Creator v2.5.7 WinALL Incl Keygen-BLiZZARD
  16. 如何将ape无损音转码为wav文件
  17. 小学计算机应用技术学院官网,成都信息技术学院官网
  18. body 没有被撑开_父元素没有被撑开塌陷问题解决方案
  19. 2022.03.21飞扬的小鸟
  20. webgl不同图像不同纹理_WebGL教程:图像处理

热门文章

  1. 计算机一级考试操作题怎么评分,计算机一级word和excel操作自动评分实现.doc
  2. Vue-i18n,非常好用的前端国际化插件,智能切换中英文
  3. 详谈单精度浮点数在内存中的存储及其误差问题
  4. linux系统上使用Python调用C++生成的.so动态链接库opencv
  5. thinkphp整合paypal贝宝支付,及post回调代码
  6. tar,gzip,bzip2命令参数详解
  7. xib的简单介绍与使用
  8. BAN和GNY逻辑的区别
  9. 用jQuery实现轮播图效果(自动播放,能手动切换)
  10. springboot缓存管理器(CacheManager)