【Vijos1404】遭遇战(最短路)
【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】遭遇战(最短路)相关推荐
- Vijos1404遭遇战[最短路建模]
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- Vijos1404 遭遇战 (SPFA)
题意分析 看了一下题解区的dalao都是线段树+DP,然而蒟蒻看不懂. 用最短路思想直接解决这道题. 把每个人的守卫时间转换为 a-1到 b. 由于最优解会有区间相交的情况,所以要将i 与 i-1 连 ...
- vijos1404 遭遇战(建图spfa)
这回要自己建图了..首先为了能连上,我们把[1,3]这种区间改记成[1,4).在图上用一条1指向4的有向边代替,边权为cost.然后为了解决覆盖的问题,即[1,3],[2,5]这种也可以满足[1,5] ...
- vijos1404 遭遇战
题意: 给你一条数轴和m条线段,第i条线段覆盖区间[Li,Ri],选择它需要代价Ci.请选出代价和最小的一组线段使得区间[L,R]中的每一段都被覆盖. 这个题目其实是数据结构优化DP的一道例题.. 但 ...
- [vijos1404] 遭遇战(spfa)
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- Vijos 1404 遭遇战 - 动态规划 - 线段树 - 最短路 - 堆
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- vijos1404:遭遇战
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- [DP] [1D1D优化] [树状数组] [最短路] 遭遇战 (clean)
背景 Background 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 题目描述 Description 今天,他们在打一张叫DUSTII的地图,万恶的恐 ...
- 【Vijos1404】遭遇战
题面 https://vijos.org/p/1404 题解 #include<cstdio> #include<iostream> #include<cstring&g ...
最新文章
- RGB与16进制颜色转换的原理
- linux内核 asmlinkage宏
- SAP 电商云 Spartacus UI 产品明细页面路由确定后,加载的是 page template
- java求多项式回归_多项式回归(Polynomial Regression)(附代码)
- [FY20 创新人才班 ASE] 第 1 次作业成绩
- 前端换行显示,后端返回br
- ROS与navigation教程——基本导航调整指南
- 照片打印预览正常打印空白_照片打印机怎么挑选 照片打印机的选购技巧分享 - 台式电脑...
- python生成器与迭代器的区别_python生成器和迭代器的区别
- JS获取短信验证码60秒
- 面试官就是这么欺负人:new Object()到底占用几个字节?
- pandas.errors.ParserError: Error tokenizing data. C error: EOF inside string starting at line xxx
- 计算机电缆静电,ZR-DJFPVP计算机电缆
- OpenCV-图像处理(06、调整图像亮度与对比度)
- Easy DVD Creator v2.5.7 WinALL Incl Keygen-BLiZZARD
- 如何将ape无损音转码为wav文件
- 小学计算机应用技术学院官网,成都信息技术学院官网
- body 没有被撑开_父元素没有被撑开塌陷问题解决方案
- 2022.03.21飞扬的小鸟
- webgl不同图像不同纹理_WebGL教程:图像处理
热门文章
- 计算机一级考试操作题怎么评分,计算机一级word和excel操作自动评分实现.doc
- Vue-i18n,非常好用的前端国际化插件,智能切换中英文
- 详谈单精度浮点数在内存中的存储及其误差问题
- linux系统上使用Python调用C++生成的.so动态链接库opencv
- thinkphp整合paypal贝宝支付,及post回调代码
- tar,gzip,bzip2命令参数详解
- xib的简单介绍与使用
- BAN和GNY逻辑的区别
- 用jQuery实现轮播图效果(自动播放,能手动切换)
- springboot缓存管理器(CacheManager)