[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 ...
随机推荐
- stateful openflow------整理openstate原理以及具体应用
openstate基本思想就是控制器下放一部分功能,交换机不再是简单的dumb,而是保留一些简单的wise. 论文中以端口锁定为例,提出了米粒型状态机在交换机内部的应用从而可以大大减少交换机和控制器之 ...
- alphe4
队名:massivehard 组员1:(组长:晓辉) 今天完成了哪些任务: 服务器基本架设完毕 明日计划: 服务器与客户端对接 用户手写记录功能的完善 还剩下哪些计划: 用户手写记录功能 服务器与客户 ...
- php 把数字转化为大写中文
PHP 数字转大写中文 PHP入门小菜鸟一枚.下午要求写一个把数字转成大写中文的脚本,百度了一波,几十个博客和网站都是用的那四个代码,第一个运行不了,第二个有问题,不合要求,第三个第四个太长,懒得看, ...
- OpenGL三维与光照
#include<windows.h> #include<gl/glut.h> #include<gl/gl.h> #include<gl/glu.h> ...
- Delphi CreateMutex 防止程序多次运行
windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上, 那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子. 需要用到的函数CreateMut ...
- 'java' 不是内部或外部命令,也不是可运行的程序的两个解决办法
第一个原因: 是环境变量path没有配置好,做如下图配置 第二个原因: 如果java环境有一段时间没有启动,再启动的时候提示这个,解决办法是进入path环境配置,如上图中界面,将JAVA_ ...
- ORA-06530: 引用未初始化的组合 ;
select * FROM TABLE(fun_test_1) : ORA-06530: 引用未初始化的组合ORA-06512: 在 "PCISS.FUN_TEST_1", lin ...
- ini_set的权限大于error_reporting
在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面.故一般性会在php.ini里设置:display_errors = Off;不过在开发的时候,我们有时候需要打开错误信息.这 ...
- 浏览器本地存储(browser-storage)
https://www.baidufe.com/component/browser-storage/api.html 首页 | API参考 | 升级日志 BrowserStorage.api.set( ...
- CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!—-揭秘令牌桶
概述 春暖花开的时候,大家都开着汽车外出旅游欣赏美丽的风景,却被堵在高速公路上,你是否为此感到痛苦?但如果有一种机制可以评估高速公路上的车流量.控制车流情况,确保进入高速公路的汽车都能在路上安全畅行, ...