博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[POJ 3171] Cleaning Shifts
阅读量:5149 次
发布时间:2019-06-13

本文共 1087 字,大约阅读时间需要 3 分钟。

Description

给出n个小区间[l,r],更新这段区间的代价为c,求覆盖一段区间[m,e]的最小值。

Solution

线段树优化 dp。

线段树维护区间内最小值,即从 m-1 时刻到 i 时刻要用的最少奶牛。

然后右端点排序,每次查询更新即可。

复杂度 O(挺大)

Code

 

// By YoungNeal#include
#include
#include
#include
#define N 10005#define M 86650#define int long longusing namespace std;int f[M];int n,L,R,tot=1;struct NNode{ int l,r,val; friend bool operator<(NNode a,NNode b){ return a.r
>1; build(l,mid,node[cur].lch); build(mid+1,r,node[cur].rch); node[cur].l=node[node[cur].lch].l; node[cur].r=node[node[cur].rch].r; node[cur].minn=min(node[node[cur].lch].minn,node[node[cur].rch].minn);}int query(int l,int r,int cur){ if(l<=node[cur].l&&node[cur].r<=r) return node[cur].minn; int mid=node[cur].l+node[cur].r>>1; int minn=0x3f3f3f3f; if(l<=mid) minn=min(minn,query(l,r,node[cur].lch)); if(mid
>1; if(l<=mid) update(l,r,c,node[cur].lch); if(mid
=0x3f3f3f3f?"-1":"%lld\n",f[R]); return 0;}

 

转载于:https://www.cnblogs.com/YoungNeal/p/8660362.html

你可能感兴趣的文章
Linux学习总结(四)-两种模式修复系统,单用户,救援模式
查看>>
Lambda表达式
查看>>
srm537 div1-3 最小费用最大流
查看>>
软件项目中的功能点法估算-原理
查看>>
IOS 获取中英文字符串长度
查看>>
Qt 获取组合键 键盘按住某键 鼠标组合实现
查看>>
php分享十七:http状态码
查看>>
php分享三十二:php调试工具
查看>>
MySQL_安装_版本8.0
查看>>
查找 nginx 路径
查看>>
Git 进阶指南(git ssh keys / reset / rebase / alias / tag / submodule )
查看>>
博客落户
查看>>
Linux虚拟机的安装(使用Centos6.3)
查看>>
VC++ 动态DLL模板-DllMain函数
查看>>
K3Cloud 设置分录的字段颜色
查看>>
C语言初学 俩数相除问题
查看>>
Shell文本处理 - 分割合并与过滤
查看>>
Java 按页拆分pdf
查看>>
我要翻译《Think Python》 - 开篇申明
查看>>
MS SQL Server2012中的CONCAT函数
查看>>