[ONTAK2015]Bajtman i Okrągły Robin
bzoj 4276: [ONTAK2015]Bajtman i Okrągły Robin
Time Limit: 40 Sec Memory Limit: 256 MB
Description
Input
Output
Sample Input
1 4 40
2 4 10
2 3 30
1 3 20
Sample Output


#include<cstdio>
#include<queue>
#include<algorithm>
#include<cstring>
#define N 50001
#define M N*11
#define inf 1e9
using namespace std;
int n,a[N],b[N],c[N],maxn;
int id[N*],num,tot=;
int src,dec,ans;
int front[N*],from[M],next[M],to[M],cap[M],cost[M],pre[N*];
int dis[N*];
bool v[N*];
int lc[N*],rc[N*];
queue<int>q;
struct node
{
int l,r;
}tr[N*];
void add(int u,int v,int w,int val)
{
to[++tot]=v;next[tot]=front[u];front[u]=tot;from[tot]=u;cap[tot]=w;cost[tot]=val;
to[++tot]=u;next[tot]=front[v];front[v]=tot;from[tot]=v;cap[tot]=;cost[tot]=-val;
}
void build(int k,int l,int r)
{
id[k]=++num;
tr[k].l=l;tr[k].r=r;
if(l==r) return;
int mid=l+r>>;
build(k<<,l,mid);
build((k<<)+,mid+,r);
add(id[k<<],id[k],mid-l+,);
add(id[(k<<)+],id[k],r-mid,);
}
void insert(int k,int l,int r,int wh)
{
if(tr[k].l==l&&tr[k].r==r)
{
add(wh,id[k],,c[wh-num]);
return;
}
int mid=tr[k].l+tr[k].r>>;
if(r<=mid) insert(k<<,l,r,wh);
else if(l>mid) insert((k<<)+,l,r,wh);
else {insert(k<<,l,mid,wh);insert((k<<)+,mid+,r,wh);}
}
bool spfa()
{
memset(dis,-,sizeof(dis));
q.push(src);v[src]=true;dis[src]=;
while(!q.empty())
{
int now=q.front();q.pop();v[now]=false;
for(int i=front[now];i;i=next[i])
{
int t=to[i];
if(dis[t]<dis[now]+cost[i]&&cap[i]>)
{
dis[t]=dis[now]+cost[i];
pre[t]=i;
if(!v[t])
{
q.push(t);
v[t]=true;
}
}
}
}
return dis[dec]>;
}
void mcmf()
{
while(spfa())
{
int tmp=inf;
for(int i=pre[dec];i;i=pre[from[i]]) tmp=min(tmp,cap[i]);
for(int i=pre[dec];i;i=pre[from[i]])
{
cap[i]-=tmp;cap[i^]+=tmp;
}
ans+=tmp*dis[dec];
}
printf("%d",ans);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&a[i],&b[i],&c[i]);
b[i]--;
maxn=max(maxn,b[i]);
}
dec=n*-;
build(,,maxn);
for(int i=;i<=n;i++)
add(src,num+i,,);
add(,dec,maxn,);
for(int i=;i<=n;i++)
insert(,a[i],b[i],i+num);
mcmf();
}
dis数组开始初始化为-1,应该是-inf,因为反向弧的费用为负值,未访问过的点要足够小才能完成回流
[ONTAK2015]Bajtman i Okrągły Robin的更多相关文章
- BZOJ 4276: [ONTAK2015]Bajtman i Okrągły Robin [线段树优化建边]
4276: [ONTAK2015]Bajtman i Okrągły Robin 题意:\(n \le 5000\)个区间\(l,r\le 5000\),每个区间可以选一个点得到val[i]的价值,每 ...
- 4276: [ONTAK2015]Bajtman i Okrągły Robin
4276: [ONTAK2015]Bajtman i Okrągły Robin Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 345 Solved ...
- 【BZOJ4276】[ONTAK2015]Bajtman i Okrągły Robin 线段树优化建图+费用流
[BZOJ4276][ONTAK2015]Bajtman i Okrągły Robin Description 有n个强盗,其中第i个强盗会在[a[i],a[i]+1],[a[i]+1,a[i]+2 ...
- BZOJ4276 : [ONTAK2015]Bajtman i Okrągły Robin
建立线段树, S向每个叶子连边,容量1,费用0. 孩子向父亲连边,容量inf,费用0. 每个强盗向T连边,容量1,费用为c[i]. 对应区间内的点向每个强盗,容量1,费用0. 求最大费用流即可. #i ...
- BZOJ 4276: [ONTAK2015]Bajtman i Okrągły Robin
最大权值匹配,贪心匈牙利即可. 检查一些人是否能被全部抓住可以采用左端点排序,右端点优先队列处理. By:大奕哥 #include<bits/stdc++.h> using namespa ...
- BZOJ 4276 [ONTAK2015]Bajtman i Okrągły Robin 费用流+线段树优化建图
Description 有n个强盗,其中第i个强盗会在[a[i],a[i]+1],[a[i]+1,a[i]+2],...,[b[i]-1,b[i]]这么多段长度为1时间中选出一个时间进行抢劫,并计划抢 ...
- bzoj 4276: [ONTAK2015]Bajtman i Okrągły Robin【线段树+最大费用最大流】
--因为T点忘记还要+n所以选小了所以WA了一次 注意!题目中所给的时间是一边闭一边开的区间,所以读进来之后先l++(或者r--也行) 线段树优化建图,很神.(我记得还有个主席树优化建树的?)首先考虑 ...
- Bajtman i Okrągły Robin
Bajtman i Okrągły Robin 题目描述 你是一个保安,你发现有n个强盗,其中第i个强盗会在[a[i],a[i]+1],[a[i]+1,a[i]+2],...,[b[i]-1,b[i] ...
- BZOJ_4276_[ONTAK2015]Bajtman i Okrągły Robin_线段树优化建图+最大费用最大流
BZOJ_4276_[ONTAK2015]Bajtman i Okrągły Robin_线段树优化建图+最大费用最大流 Description 有n个强盗,其中第i个强盗会在[a[i],a[i]+1 ...
随机推荐
- 结对作业(1.0版)(bug1已修复)
import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing ...
- Alpha阶段综合报告
1.版本测试报告 1.1在测试过程中总共发现了多少Bug?每个类别的Bug分别为多少个? Bug分类 Bug内容 Fixed 编辑博文时改变文字格式会刷新界面 Can’t reproduced 无 N ...
- .NET 类库研究必备参考 添加微软企业库源码
前不久,为大家提供了一个.NET 类库参考源码的网站,扣丁格鲁(谐音“coding guru”),使用了段时间,发现一些不方便的地方,特意做了一些更改,希望大家多提意见,下面是此次更改的地方. 更改1 ...
- Putty+Xming实现在Windows客户端显示Linux服务器端的图形化程序
走了不少弯路啊~~~言归正传,最近研发和我说要在一台EC2的机器上运行一个带GUI的程序,当时我就纳闷了:EC2的机器应该没有桌面套件的吧,那该怎么运行GUI的程序呢?百思不得其解时收到一封邮件,大致 ...
- js全端
js是世界上最好的语言之一,或许可以不用加之一 我是个js游戏前端开发者,但是我不局限于只是开发h5游戏,微信小游戏... js很强大很强大很强大,没有哪种语言能通吃,除了js. 网页, app, 服 ...
- mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204
前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybati ...
- window.location.hash 使用
[转]http://www.cnblogs.com/nifengs/p/5104763.html location是javascript里边管理地址栏的内置对象,比如location.href就管理页 ...
- python中使用%与.format格式化文本
初学python,看来零零碎碎的格式化文本的方法,总结一下python中格式化文本的方法.使用不当的地欢迎指出谢谢. 1.首先看使用%格式化文本 常见的占位符: 常见的占位符有: %d 整数 %f 浮 ...
- 洛谷 P1357 花园 解题报告
P1357 花园 题目描述 小\(L\)有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为\(1~N(2<=N<=10^{15})\).他的环形花园每天都会换一个新花样,但他的花园都不 ...
- 【bzoj3575】 Hnoi2014—道路堵塞
http://www.lydsy.com/JudgeOnline/problem.php?id=3575 (题目链接) 题意 给出一个有向图和一条最短路,问最短路上任意一条边断掉,此时的最短路是多少. ...