【图论】清理牛棚/Cleaning Shifts S(luogu 4644)
正题
luogu 4644
题目大意
给你一段时间,有n头奶牛,第i头可以花费sis_isi的代价清理lil_ili到rir_iri,问你清理完所有时间段的最小代价
解题思路
所有点需求都为1的线性规划,直接代入最短路就可以了
code
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 100010
#define mp make_pair
#define fs first
#define sn second
using namespace std;
ll n,l,r,x,y,z,tot,p[N],b[N],h[N];
priority_queue<pair<ll,ll> >d;
struct rec
{ll to,nx,l;
}e[N<<2];
void add(ll x,ll y,ll z)
{e[++tot].to=y;e[tot].l=z;e[tot].nx=h[x];h[x]=tot;return;
}
bool dij()
{memset(b,127/3,sizeof(b));b[l] = 0;d.push(mp(0,l));while(!d.empty()){ll u=d.top().sn;d.pop();if(p[u])continue;p[u]=1;for(int i=h[u];i;i=e[i].nx){ll v=e[i].to;if(b[u]+e[i].l<b[v]){b[v]=b[u]+e[i].l;d.push(mp(-b[v],v));}}}return p[r+1];
}
int main()
{scanf("%lld%lld%lld",&n,&l,&r);for(int i=l;i<r;++i)add(i+1,i,0);for(int i=1;i<=n;++i){scanf("%lld%lld%lld",&x,&y,&z);add(x,y+1,z);}if(dij())printf("%lld",b[r+1]);else puts("-1");return 0;
}
【图论】清理牛棚/Cleaning Shifts S(luogu 4644)相关推荐
- bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 941 Solved ...
- 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 DP + 线段树 / SPFA
1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 975 Solved ...
- poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)
3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 462 Solved ...
- Cleaning Shifts 题解
关于Cleaning Shifts的一些解题思路 先贴题目 Farmer John is assigning some of his N (1 <= N <= 25,000) cows t ...
- 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)
http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...
- 【POJ - 2376】Cleaning Shifts (贪心)
题干: Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores ...
- Cleaning Shifts POJ - 2376(反贪?)
FJ分配 N (1 <= N <= 25,000) 只中的一些奶牛在牛棚附近做些清洁. 他总是要让至少一只牛做清洁.他把一天分成T段(1 <= T <= 1,000,000), ...
- bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班
思路:可以贪心,也可以最短路. 贪心写法:因为在保证合法的前提下,我们选择的区间一定要右端点尽量靠后才行,于是我们每次就选择一个合法的并且右端点最靠后的区间就好了(如果没有合法的输出-1即可).时间复 ...
- poj3171 Cleaning Shifts
传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间. 分析 为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理.我们考虑以t ...
最新文章
- openmv4闪灯说明_OpenMV Cam
- matlab R2010a windows和linux版本下载地址
- RelativeLayout和LinearLayout性能比较
- kafka管理神器-kafkamanager
- 移动WEB的页面布局
- jedis使用 api_通过Jedis API使用排序集
- csv格式清洗与转换python_实例详解Python中 CSV格式清洗与转换
- zblog php 七牛缩略图,zblog中Gravatar头像不显示解决方法
- html打开自动点击,如何把一段JS点击触发改为页面打开后就自动触发?
- 异步发电机 matlab仿真,基于MATLABSIMULINK异步电机矢量控制系统的仿真.pdf
- weex android 交互,weex项目接入到Android studio中
- mac下cocos2dx(带jsoncpp第三方库)编译为android项目心得
- Android 修改系统时间代码
- dell网卡linux驱动,Dell R720上安装linux网卡驱动
- 最适合程序员的画图工具?
- 三极管放大电路的基本原理
- 【考研】数据库知识点总结
- 敢问程序员路在何方、路在脚下。
- Vue----.stop、.prevent、.capture、.self用法以及.stop和.self的区别
- Trove系列(二)—Trove 的架构和流程介绍
热门文章
- c语言中二重指针如何赋值,关于二重指针释放的有关问题
- 如何在注册表里计算机用户名,可以通过注册表修改电脑的密码 ?怎么做的?
- 储存引擎InnoDB 索引选择 为何是B+树 而不是 B树 哈希表
- 二叉搜索树的插入与删除(C语言)
- [Java基础]反射获取构造方法并使用
- Network UVA - 315(Tarjan+连通性问题:求割点)
- 数据结构------选择排序
- [CQOI2015]选数(杜教筛)
- [BZOJ3944] Sum
- CF1479B Painting the Array