$S->i$，边权为$w_i$

$i->T$，边权为$b_i$

$i->i'$，边权为$p_i$

$j->i'$，边权为$∞$，（这里的i和j需要满足题目中的i,j限制）

#include<bits/stdc++.h>
#define M 1000005
#define N 150005
#define INF 19890604
using namespace std; struct edge{int u,v,next;}e[M]={}; int head[N]={},use=;
memset(dis,,sizeof(dis));
q.push(S); dis[S]=;
while(!q.empty()){
int u=q.front(); q.pop();
if(e[i].v&&dis[e[i].u]==){
dis[e[i].u]=dis[u]+;
q.push(e[i].u);
}
}
return dis[T];
} int dfs(int x,int flow){
if(x==T) return flow; int sum=;
if(e[i].v&&dis[x]+==dis[e[i].u]){
int k=dfs(e[i].u,min(flow,e[i].v));
e[i].v-=k; e[i^].v+=k;
sum+=k; flow-=k;
if(flow==) return sum;
}
if(flow==) dis[x]=-;
return sum;
} int dinic(){
int res=;
while(bfs())
res+=dfs(S,<<);
return res;} int n,sum=;
int a[N]={},b[N]={},w[N]={},l[N]={},r[N]={},p[N]={},ok[N]={}; int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d%d%d%d",a+i,b+i,w+i,l+i,r+i,p+i);
sum+=b[i]+w[i];
}
S=,T=*n+;
for(int i=;i<=n;i++) for(int j=;j<i;j++)
if(l[i]<=a[j]&&a[j]<=r[i])
cout<<sum-dinic()<<endl;
}

#include<bits/stdc++.h>
#define M 400000
#define INF 19890604
using namespace std; struct edge{int u,v,next;}e[M]={}; int head[M]={},use=;
memset(dis,,sizeof(dis));
q.push(S); dis[S]=;
while(!q.empty()){
int u=q.front(); q.pop();
if(e[i].v&&dis[e[i].u]==){
dis[e[i].u]=dis[u]+;
q.push(e[i].u);
}
}
return dis[T];
} int dfs(int x,int flow){
if(x==T) return flow; int sum=;
if(e[i].v&&dis[x]+==dis[e[i].u]){
int k=dfs(e[i].u,min(flow,e[i].v));
e[i].v-=k; e[i^].v+=k;
sum+=k; flow-=k;
if(flow==) return sum;
}
if(flow==) dis[x]=-;
return sum;
} int dinic(){int res=; while(bfs()) res+=dfs(S,<<); return res;} int c[M]={},a[M]={},b[M]={},w[M]={},l[M]={},r[M]={},p[M]={};
int lc[M]={},rc[M]={},cnt,rt=,sum=,n; void updata(int x,int l,int r,int ll,int rr,int id){
if(!x) return;
int mid=(l+r)>>;
if(ll<=mid) updata(lc[x],l,mid,ll,rr,id);
if(mid<rr) updata(rc[x],mid+,r,ll,rr,id);
}
void updata(int &x,int l,int r,int id,int k){
cnt++; lc[cnt]=lc[x]; rc[cnt]=rc[x];
if(l==r) return;
int mid=(l+r)>>;
if(id<=mid) updata(lc[x],l,mid,id,k);
else updata(rc[x],mid+,r,id,k);
} int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d%d%d%d",a+i,b+i,w+i,l+i,r+i,p+i);
c[i]=a[i]; sum+=b[i]+w[i];
}
sort(c+,c+n+);
for(int i=;i<=n;i++){
a[i]=lower_bound(c+,c+n+,a[i])-c;
l[i]=lower_bound(c+,c+n+,l[i])-c;
r[i]=upper_bound(c+,c+n+,r[i])-c-;
}
S=; T=*n+; cnt=*n+;
for(int i=;i<=n;i++){
if(l[i]<=r[i]) updata(rt,,n,l[i],r[i],i+n);
updata(rt,,n,a[i],i);
}
cout<<sum-dinic()<<endl;
}

## 【bzoj3218】a+b Problem 最小割+主席树的更多相关文章

1. BZOJ3218 UOJ#77 A+B Problem(最小割+主席树)

竟然在BZOJ上拿了Rank1太给力啦. p.s.:汗,一发这个就被一堆人在2月27号强势打脸-- 传送门(BZOJ) 传送门(UOJ) 说说这道题目吧: 首先是说说这个构图吧.因为有选择关系,我们很 ...

2. bzoj3218 a+b Problem（最小割+主席树优化建边）

由于6.22博主要学测,大半时间学文化课,近期刷题量&写题解的数量会急剧下降. 这题出得挺经典的,首先一眼最小割,考虑朴素的做法:与S联通表示白色,与T联通表示黑色,S向i连流量为w[i]的边 ...

3. bzoj 3218 a + b Problem（最小割+主席树）

[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3218 [题意] 给n个格子涂白或黑色,白则wi,黑则bi的好看度,若黑格i存在: 1& ...

4. [bzoj3218] a+b problem [最小割+数据结构优化建图]

题面 传送门 思路 最小割 我们首先忽略掉那个奇♂怪的限制,就有一个比较显然的最小割模型: 建立源点$S$和汇点$T$ 对于每个元素$i$建立一个点$i$,连边$<S,i,w[i]>$和$... 5. bzoj3218 a + b Problem（网络流+主席树）$ans=\sum_{color_i=black}\ b_i+\sum_{color_i=white}\ w_i-\sum_{i=abnormal}\ p_i$把它转化一下$ans=\sum_{i ...

6. 【BZOJ-3218】a+b Problem 最小割 + 可持久化线段树

3218: a + b Problem Time Limit: 20 Sec  Memory Limit: 40 MBSubmit: 1320  Solved: 498[Submit][Status] ...

7. Yet Another Maxflow Problem CodeForces - 903G (最小割,线段树)

大意: 两个n元素集合$A$, $B$, $A_i$与$A_{i+1}$连一条有向边, $B_i$与$B_{i+1}$连一条有向边, 给定$m$条从$A_i$连向$B_j$的有向边, 每次询问修改\$A ...

8. P4137 Rmq Problem / mex（主席树）

传送门 思路: 直接上主席树,对于每个询问$$(l,r)$$,我们在第$$r$$个版本的主席树中查询最晚出现的小于$$l$$最小的数就行了. 因为答案可能为$$a_i+1$$,所以我们在离散化的时候考 ...

9. Codeforces 1368H - Breadboard Capacity（最小割+线段树维护矩阵乘法）

Easy version:Codeforces 题面传送门 & 洛谷题面传送门 Hard version:Codeforces 题面传送门 & 洛谷题面传送门 首先看到这种从某一种颜色 ...

## 随机推荐

1. ABP理论学习之多租户

返回总目录 本篇目录 什么是多租户 ABP中的多租户 什么是多租户 维基百科:"软件多租户是指一种软件架构,在这种软件架构中,软件的一个实例运行在服务器上并且为多个租户服务".一个 ...

2. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室（五） 之 加好友，加群流程，消息管理和即时消息提示的实现

前言 前前一篇留了个小问题,在上一篇中忘了写了,就是关于LayIM已经封装好的上传文件或者图片的问题.对接好接口之后,如果上传速度慢,界面就会出现假死情况,虽然文件正在上传.于是我就简单做了个图标替代 ...

3. java Map及Map.Entry详解(转)

Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法,keySet()方法返回值是Map中key值的集合:en ...

5. Python之argparse模块

argparse 命令行参数解析模块,原optparse已经停止开发,建议替换为argparse 在python2.7后默认加入 parser ArgumentParser默认解析来源sys.argv ...

6. ie兼容问题记录

工作中遇到的ie网站兼容性问题  头疼.......... 以下为从网上搜索学习的整理兼容性方法 用于自己记录 #兼容问题 ##css hack: https://blog.csdn.net/fres ...

7. 第十一节 JS事件基础

空白点击事件(没什么用处,做个介绍) <!DOCTYPE html> <html lang="en"> <head> <meta char ...

8. CSS技巧收集——毛玻璃效果

先上 demo和 源码 其实毛玻璃的模糊效果技术上比较简单,只是用到了 css 滤镜(filter)中的 blur 属性.但是要做一个好的毛玻璃效果,需要注意很多细节. 比如我们需要将上图中页面中间的 ...

9. Qt_Android_书

1. http://bbs.csdn.net/topics/390942701 <<Qt on Android 核心编程>> Qt Quick核心编程 2.

10. 【Java】list转换json的中文乱码问题

添加如图红框内容