[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 ...
随机推荐
- 在新的电脑上部署 Hexo,保留原有博客的方法
用U盘从旧的电脑拷贝整个blog文件夹. 在新的电脑上装好git并配置好用户名和密钥. 安装 node.js 安装 hexo:npm install hexo-cli -g 用U盘把blog文件夹拷贝 ...
- BZOJ 3132(上帝造题的七分钟-树状数组求和+2D逆求和数组)
3132: 上帝造题的七分钟 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 46 Solved: 18[Submit][Status][Discus ...
- 个人作业4——alpha阶段个人总结(201521123003 董美凤)
一.个人总结 在alpha 结束之后, 每位同学写一篇个人博客, 总结自己的alpha 过程: 请用自我评价表:http://www.cnblogs.com/xinz/p/3852177.html 有 ...
- node入门学习(一)
一.安装node.js 方式很多npm,git等,新手建议从官网上直接去下载node的安装包.一键安装. 二.创建一个web服务器. const http = require('http'); htt ...
- 用go实现的一个堆得数据结构
用golang实现的堆,主要提供了两个方法,push和pop及堆的大小,代码如下: package main import ( "errors" "fmt" ) ...
- mongodb 下载安装 转
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...
- curl 实例详解
使用PHP的cURL库可以简单和有效地去抓网页.你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据 了.无论是你想从从一个链接上取部分数据,或是取一个XML文件并 ...
- swusec的构想,顺便送开学福利——校园网一号多登录演示
前言: 我不是什么大牛,我只想通过我的努力,打造swu网络安全爱好者的圈子.期待你加入. swusec是什么? swusec (SouthWestUniversity SecurityTeam),西南 ...
- codeforces 1041 E.Vasya and Good Sequences(暴力?)
E. Vasya and Good Sequences time limit per test 2 seconds memory limit per test 256 megabytes input ...
- iOS 字符串NSString 的一些常用方法
一.字符串创建 1. NSString *str1 = [NSString new]; 2. NSString *str2 = @"字符串内容"; 二.字符串拼接 1. NSStr ...