这回要自己建图了。。首先为了能连上,我们把[1,3]这种区间改记成[1,4)。在图上用一条1指向4的有向边代替,边权为cost。然后为了解决覆盖的问题,即[1,3],[2,5]这种也可以满足[1,5],我们再建t-s+1条由i指向i-1的有向边,边权为0.这样的话把边再优化一下,让[si,ti+1)建成max(si,s)->min(ti+1,t).然后以s为源点跑最短路即可。

#include <bits/stdc++.h>
using namespace std;
#define pa pair<int,int>
#define ll long long
#define inf 1LL<<60
#define N 100100
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,s,t,h[N],num=0;
ll d[N];
bool inq[N];
struct edge{int to,next,v;
}data[N];
void spfa(){queue<int>q;for(int i=s;i<=t;++i) d[i]=inf;q.push(s);inq[s]=1;d[s]=0;while(!q.empty()){int x=q.front();q.pop();inq[x]=0;for(int i=h[x];i;i=data[i].next){int y=data[i].to;if(d[x]+data[i].v<d[y]){d[y]=d[x]+data[i].v;if(!inq[y]) inq[y]=1,q.push(y);}}}
}
int main(){
//  freopen("a.in","r",stdin);n=read();s=read();t=read();++t;for(int i=1;i<=n;++i){int x=read(),y=read(),v=read();if(x>t-1||y<s) continue;x=std::max(x,s);y=std::min(y+1,t);data[++num].to=y;data[num].next=h[x];h[x]=num;data[num].v=v;}for(int i=s;i<=t;++i){data[++num].to=i-1;data[num].next=h[i];h[i]=num;data[num].v=0;}spfa();if(d[t]==inf) puts("-1");else printf("%lld\n",d[t]);return 0;
}

vijos1404 遭遇战(建图spfa)相关推荐

  1. CF-346 D. Robot Control(反向建图spfa)

    CF-346 D. Robot Control(反向建图spfa) 题目链接 题意 有向图(有环)中有一个机器人,机器人有三种规则: 重复访问同一个点会自我销毁 无路可走会自我销毁 多岔路口会随机选择 ...

  2. nssl1150,jzoj5309-密室【分层建图,SPFA】

    正题 jzoj题目链接:https://jzoj.net/senior/#main/show/5309 题目大意 有n个点,m条边,k种钥匙.有些点分布了钥匙,有些边需要一些钥匙才可以通过,求1到n的 ...

  3. POJ 2312Battle City(BFS-priority_queue 或者是建图spfa)

    1 /* 2 bfs搜索!要注意的是点与点的权值是不一样的哦! 3 空地到空地的步数是1, 空地到墙的步数是2(轰一炮+移过去) 4 所以用到优先队列进行对当前节点步数的更新! 5 */ 6 #inc ...

  4. Invitation Cards POJ - 1511 SPFA(dijkstra+反向建图+邻接表(下标过大)+输入输出用stdio(iostream超时))

    题目大意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接 到达终点站,是单向的,每条路线有它自己的车费.有P个人早上从1出发 ,他们要到达每一个公交站点, 然后到了晚上再返回点 ...

  5. 差分约束问题 ---- 2019ccpc哈尔滨A. Artful Paintings[二分+差分约束+建图剪枝]

    题目链接 题目大意: 有N≤3e3N≤3e3N≤3e3个格子,你可以任意给每个格子染色,但是要满足M≤3e3M≤3e3M≤3e3限制条件,限制条件有两种类型: 区间[l,r][l,r][l,r]中被染 ...

  6. 解题报告:NOIP2013 车站分级(拓扑序递推求解差分约束、建图优化O(n+m)) 超详细讲解

    本题是2013年NOIP普及组的压轴题 差分约束裸题. 计算当前线路中最小的级别(比较始发站和终点站). 整条线路中所有大于这个级别的都必须停靠 所有未停靠的站点的级别一定小于这个级别 也就是说所有未 ...

  7. POJ2195费用流+BFS建图

    题意:       给你一个n*m的地图,上面有w个人,和w个房子,每个人都要进房子,每个房子只能进一个人,问所有人都进房子的路径总和最少是多少? 思路:       比较简单的最大流,直接建立两排, ...

  8. hdu4411 经典费用里建图

    题意:       给以一个无向图,0 - n,警察在0,他们有k个警队,要派一些警队去1--n个城市抓小偷, 问所有吧所有小偷全抓到然后在返回0的最小路径和是多少,当地i个城市被攻击的时候他会通知i ...

  9. PAT甲级1131 Subway Map (30分):[C++题解]堆优化dijkstra、单源最短路、地铁地图、巧妙地建图套dijkstra模板!!

    文章目录 题目分析 题目链接 题目分析 原题: 来源:acwing 分析: 建图:所有能走到的点之间建立一条边,比如下面一条地铁线路有4站,它们是相通的,两两之间建一条边,边权是经过的站点数. 下面考 ...

最新文章

  1. date数据类型的正确格式_说说数据类型 上篇日期
  2. RTX组织架构刷新出现了问题
  3. centos7.3安装nodejs
  4. 【渝粤教育】广东开放大学 建筑工程施工 形成性考核 (58)
  5. 常见位操作:获取,设置,清零
  6. strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur
  7. iOS开发-16进制颜色转换
  8. IGNITE TROUBLESHOOT
  9. Vue项目—请求函数的封装
  10. struts2 拦截器_Struts2令牌拦截器示例
  11. maya藤蔓插件_用maya制作藤蔓蔓延的效果
  12. 网络安全商业模式分析
  13. java 通配符 删除文件_jQuery removeClass通配符
  14. HarmonyOS APP开发入门3——组件(二 Text组件)
  15. 云速美建站手机端使用百度app打开手机端网站闪退的问题
  16. Android5.1 -Recents分析
  17. 【小程序实现五星好评功能】
  18. 数字信号分析学习思想整理 | 基本框架
  19. 计算机的四屏故障维修,四则电脑显示器硬件故障检修实用技巧
  20. 投研报告 - Ariva(ARV)

热门文章

  1. CSS3 @font-face (webfont)
  2. 自定义WIZ文档模板
  3. 软件测试的后期发展,软件测试
  4. 程序员的第一课:写程序的本质
  5. 习题4-11 兔子繁衍问题 (15分)
  6. 校园跑腿/校园任务平台源码
  7. tf.logging.set_verbosity(tf.logging.INFO)
  8. iOS XIB的创建使用
  9. 现代化自定制 - 列表和库部分
  10. angular路由传递参数_详解Angular5 路由传参的3种方法