【题解】Vijos1404 遭遇战(最短路图论套路)
【题解】Vijos1404 遭遇战(最短路图论套路)
感觉一定要有建模的思想,不管什么东西要抽象建模之后再用算法解决...
求最短代价就可能可以用最短路,这句话不是强行解释,而是因为图论建模过后,可能存在很多不合法的情况,但是由于我们只是求最短路,所以我们只要保证对于每一条最短路可以构造一个与之对应的合法原问题解
给你一条数轴和 m 条线段,第 i 条线段覆盖区间 [Li,Ri] ,选择它需要代价 Ci 。
请选出代价和最小的一组线段使得区间 [L,R] 中的每一段都被覆盖。
考虑建立这些有向边:\((L_i,R_i+1,C_i),(x,x-1,0)\)
考虑对于一个最短路,构造方案就是这条最短路经过的所有\(i\)选上即可。
充分性和必要性都挺显然的,因为(不绕环的)路径和原问题的解可以一一对应,而一定存在一条最短路使得整条最短路没有环。
加1的原因是我们只要整点覆盖
//@winlere
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std; typedef long long ll; char __buf[1<<18],*__c=__buf,*__ed=__buf;
inline int qr(){
register int ret=0,f=0;
register char c=getchar();
while(!isdigit(c))f|=c==45,c=getchar();
while(isdigit(c)) ret=ret*10+c-48,c=getchar();
return f?-ret:ret;
}
const int maxn=9e4+5;
const int inf=0x3f3f3f3f;
int d[maxn];
struct E{int to,w;};
vector<E> e[maxn];
typedef pair<int,int> P;
priority_queue<P,vector<P>,greater<P> > q;
inline void add(const int&fr,const int&to,const int&w){e[fr].push_back({to,w});}
int n,L,R;
inline void dij(){
memset(d,0x3f,sizeof d);
q.push({d[L]=0,L});
while(q.size()){
auto g=q.top();
q.pop();
if(g.first>d[g.second]) continue;
for(auto t:e[g.second])
if(d[t.to]>g.first+t.w)
q.push({d[t.to]=g.first+t.w,t.to});
}
}
int main(){
n=qr(); L=qr(); R=qr();
for(int t=1,t1,t2,v;t<=n;++t){
t1=max(L,qr()),t2=min(qr()+1,R+1);
add(t1,t2,v=qr());
add(t2,t1,v);
}
for(int t=L+1;t<=R+1;++t) add(t,t-1,0);
dij();
if(d[R+1]!=d[0]) printf("%d\n",d[R+1]);
else puts("-1");
return 0;
}
【题解】Vijos1404 遭遇战(最短路图论套路)的更多相关文章
- Vijos1404 遭遇战 最短路,dijkstra,堆
P1404遭遇战 标签:[显示标签] 背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分 ...
- Vijos1404遭遇战[最短路建模]
背景 你知道吗,SQ Class的人都很喜欢打CS.(不知道CS是什么的人不用参加这次比赛). 描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC ...
- NOIP2017 逛公园 题解报告 【最短路 + 拓扑序 + dp】
题目描述 策策同学特别喜欢逛公园.公园可以看成一张NNN个点MMM条边构成的有向图,且没有 自环和重边.其中1号点是公园的入口,NNN号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花 ...
- HDU1181 题解(Floyd最短路)
题面: 变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Subm ...
- B - Legacy CodeForces - 787D 线段树优化建图+dij最短路 基本套路
B - Legacy CodeForces - 787D 这个题目开始看过去还是很简单的,就是一个最短路,但是这个最短路的建图没有那么简单,因为直接的普通建图边太多了,肯定会超时的,所以要用线段树来优 ...
- vijos1404 遭遇战
描述 今天,他们在打一张叫DUSTII的地图,万恶的恐怖分子要炸掉藏在A区的SQC论坛服务器!我们SQC的人誓死不屈,即将于恐怖分子展开激战,准备让一个人守着A区,这样恐怖分子就不能炸掉服务器了.(一 ...
- P1266 速度限制 (最短路,图论)
题目链接 Solution 在最短路转移的时候在队列或者堆中记录状态为 \(f[u][v]\) 代表上一个节点为 \(u\) ,速度为 \(v\) . 然后按部就班转移即可... Code #incl ...
- 题解 P1144 【最短路计数】
这道题用一次SPFA就可以过了.在求最短路的同时,对答案进行统计即可. 实现: \(dis_i\)表示从1到\(i\)的最短路(实在还是不懂的话看程序吧). 当\(dis_i>dis_j+1\) ...
- 【题解】Bzoj2125最短路
处理仙人掌 ---> 首先建立出圆方树.则如果询问的两点 \(lca\) 为圆点,直接计算即可, 若 \(lca\) 为方点,则需要额外判断是走环的哪一侧(此时与两个点在环上的相对位置有关.) ...
随机推荐
- 创建ROS 工作空间时出现:程序“catkin_init_workspace”尚未安装,程序“catkin_make”尚未安装。
问题:创建ROS 工作空间时出现:程序“catkin_init_workspace”尚未安装,程序“catkin_make”尚未安装. 解决方法: source /opt/ros/kinetic/se ...
- genymotion 和genymotion eclipse 插件安装 !
昨天天有好心网友在群里共享了一个好用的 android 模拟器 genymotion 昨天就试用了下 真心流畅 各位不妨一试 http://www.genymotion.com/ doc https: ...
- 设置 Tomcat 的JVM运行内存
win7,64位: Tomcat7.0.5:jdk1.7: 情况一:Tomcat注册成系统服务,如何修改JVM运行内存? WINDOW 64位 , cmd打开注册表(regedit) HKEY_LOC ...
- oracle函数 log(x,y)
[功能]返回以x为底的y的对数 [参数]x,y,数字型表达式, [条件]x,y都必须大于0 [返回]数字 [示例] select power(4,2),log(16,2),1/log(16,4) fr ...
- Laravel 之搜索引擎elasticsearch扩展Scout
简介 Laravel Scout 是针对Eloquent 模型开发的一个简单的,基于驱动的全文检索系统.Scout 使用模型观察者时会自动保持你的检索索引与你的 Eloquent 记录同步. 目前,S ...
- Python--day71--内容回顾
- uni-app学习记录06-Vuex简单使用
import Vue from 'vue' // 这里引入vuex import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Stor ...
- uni-app学习记录02-属性绑定.for循环
<template> <view class="content"> <text> 我是首页 </text> <!-- 输出纯字 ...
- Python--day30--网络基础
单波: 查找mac:
- vector容器、
一. vector 向量容器1. 创建 vector 对象(1)不指定容器大小vector<int> V;(2)指定容器大小vector<int> V(10);(3) ...