传送门

题目大意

有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间。

分析
为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理。我们考虑以t1为第一关键字,t2为第二关键字将所有奶牛排序。用dp[i][j]表示考虑到第i只牛,覆盖到点j最少需要多少钱。我们可以将i这一维去掉,则dp[j]=min{dp[j],dp[j'](t1-1<=j'<=t2-1)}。然后进行线段树优化就可以了。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const long long inf = 1e12+7;
struct node {long long t1,t2,sum;
};
node wh[11000];
long long d[880000];
inline bool cmp(const node x,const node y){if(x.t1==y.t1)return x.t2<y.t2;return x.t1<y.t1;
}
inline void build(long long le,long long ri,long long wh,long long pl,long long k){if(le==ri){d[wh]=k;return;}long long mid=(le+ri)>>1;if(mid>=pl)build(le,mid,wh<<1,pl,k);else build(mid+1,ri,wh<<1|1,pl,k);d[wh]=min(d[wh<<1],d[wh<<1|1]);return;
}
inline long long q(long long le,long long ri,long long wh,long long x,long long y){if(le>=x&&ri<=y){return d[wh];}long long mid=(le+ri)>>1,ans=inf;if(mid>=x)ans=min(ans,q(le,mid,wh<<1,x,y));if(mid<y)ans=min(ans,q(mid+1,ri,wh<<1|1,x,y));return ans;
}
int main(){long long n,s,t,i,j,k;scanf("%lld%lld%lld",&n,&s,&t);for(i=1;i<=n;i++){scanf("%lld%lld%lld",&wh[i].t1,&wh[i].t2,&wh[i].sum);wh[i].t1+=2;wh[i].t2+=2;wh[i].t1-=s;wh[i].t2-=s;}t=(t-s)+2,s=2;build(1,t,1,1,0);for(i=s;i<=t;i++)build(1,t,1,i,inf);sort(wh+1,wh+n+1,cmp);for(i=1;i<=n;i++){long long x=min(q(1,t,1,wh[i].t2,wh[i].t2),q(1,t,1,wh[i].t1-1,wh[i].t2-1)+wh[i].sum);build(1,t,1,wh[i].t2,x);}long long x=q(1,t,1,t,t);if(x>=inf)x=-1;printf("%lld\n",x);return 0;
}

转载于:https://www.cnblogs.com/yzxverygood/p/9476145.html

poj3171 Cleaning Shifts相关推荐

  1. poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)

    3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 462  Solved ...

  2. bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 941  Solved ...

  3. Cleaning Shifts 题解

    关于Cleaning Shifts的一些解题思路 先贴题目 Farmer John is assigning some of his N (1 <= N <= 25,000) cows t ...

  4. 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 DP + 线段树 / SPFA

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 975  Solved ...

  5. 【POJ - 2376】Cleaning Shifts (贪心)

    题干: Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores ...

  6. 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...

  7. 【图论】清理牛棚/Cleaning Shifts S(luogu 4644)

    正题 luogu 4644 题目大意 给你一段时间,有n头奶牛,第i头可以花费sis_isi​的代价清理lil_ili​到rir_iri​,问你清理完所有时间段的最小代价 解题思路 所有点需求都为1的 ...

  8. bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班

    思路:可以贪心,也可以最短路. 贪心写法:因为在保证合法的前提下,我们选择的区间一定要右端点尽量靠后才行,于是我们每次就选择一个合法的并且右端点最靠后的区间就好了(如果没有合法的输出-1即可).时间复 ...

  9. Greedy:Cleaning Shifts(POJ 2376)

      牛的大扫除 题目大意:农夫有N只牛,这些牛要帮助打扫农舍,这些牛只能打扫固定位置(千万要注意这个位置不是连续的),每一段区间必须至少有一只牛打扫,问你至少需要多少只牛?(如果区间不能完全被覆盖,则 ...

最新文章

  1. 区域链结构对于数据中心有什么影响?这个影响是好是坏呢!
  2. 数据中心里的应急关机技术
  3. 写一个高性能的敏感词检测组件
  4. 上元节的灯会(亮)-dfs
  5. 【CF1204D】Kirk and a Binary String【结论题】【LIS】
  6. java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...
  7. 如何使用Trie树,设计实践Google一样的输入提示功能
  8. Java并发编程之并发容器ConcurrentHashMap(JDK1.7)解析
  9. latex中使用bibtex显示paragraph ended before \mule@arg was complete 的解决方法
  10. 基于tensorflow深度学习的中文的命名实体识别
  11. 【Java程序设计】类与对象的基本概念(上)
  12. 计算机应用课程的考核情况,《计算机应用技术》课程kpi考核说明..doc
  13. Linux中的静态库和动态库简介及生成过程示例
  14. VSCODE原装1.7版本百度网盘download
  15. 北京时间校准 服务器 显示器 标准,纯干货~北京时间校准显示器实用分享
  16. java倒序输出英文句子_Java实现英文句子中的单词顺序逆序输出的方法
  17. 手机屏幕分类、材料硬度解析
  18. MSDB数据库置疑的解决方法
  19. leetcode打家劫社简单实现--python
  20. 在开发者选项里开启gpu渲染后,能不能关闭应用的硬件加速???

热门文章

  1. ERROR 1442 (HY000):because it is already used by statement which invoked this stored function/tr
  2. Ubuntu下在Apache中运行Keystone
  3. check_http检查http服务
  4. 不能从const char *转换为LPCWSTR --VS经常碰到
  5. update语句更新多条记录, 标记下
  6. 详述 PyPI 中的远程代码执行漏洞,可引发供应链攻击
  7. 安全组规则跨region导入导出功能介绍
  8. 阿里云 centos 安装图形化界面
  9. 不仅限于智慧城市 低功耗广域网络也在改变农业生产方式
  10. 京东的交易系统 之 高并发架构分享