建图((x,y,c,l)表示x到y,费用c,流量l)

(S,1,0,K)

(i,i+1,0,K) 这个边上的流量,表示i还可以被覆盖的次数

(N,T,0,K)

(i,j,w,1)对于权值为w的区间[i,j]

然后跑最大费用最大流

因为没有负权值,所以肯定尽量跑满

 #include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define CLR(a,x) memset(a,x,sizeof(a))
#define MP make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pa;
const int maxn=,maxp=,inf=1e9; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} int l[maxn],r[maxn],w[maxn],N,M,K,tmp[maxp],S=,T=;
struct Edge{
int b,l,ne,c;
}eg[maxp*];
int egh[maxp],ect=;
int dis[maxp],fae[maxp];
bool flag[maxp]; inline void adeg(int a,int b,int c,int l){
// printf("~%d %d %d %d\n",a,b,c,l);
eg[++ect].b=b,eg[ect].l=l,eg[ect].c=c,eg[ect].ne=egh[a],egh[a]=ect;
eg[++ect].b=a,eg[ect].l=,eg[ect].c=-c,eg[ect].ne=egh[b],egh[b]=ect;
} queue<int> q;
inline bool spfa(){
CLR(dis,-);dis[S]=;
CLR(fae,);q.push(S);
while(!q.empty()){
int p=q.front();q.pop();
// printf("~%d %d\n",p,dis[S]);
flag[p]=;
for(int i=egh[p];i;i=eg[i].ne){
int b=eg[i].b;if(!eg[i].l) continue;
// printf("!!%d %d %d\n",b,eg[i].c,eg[i].l);
if(dis[b]<dis[p]+eg[i].c){
dis[b]=dis[p]+eg[i].c;
fae[b]=i;
if(!flag[b]) q.push(b),flag[b]=;
}
}
}return dis[T]>=;
} int main(){
//freopen("","r",stdin);
int i,j,k;
for(int t=rd();t;t--){
N=rd(),K=rd();
for(i=;i<=N;i++){
tmp[i]=l[i]=rd(),tmp[i+N]=r[i]=rd(),w[i]=rd();
}sort(tmp+,tmp+N+N+);
int M=unique(tmp+,tmp+N+N+)-tmp-;
CLR(egh,);ect=;
for(i=;i<=N;i++){
l[i]=lower_bound(tmp+,tmp+M+,l[i])-tmp;
r[i]=lower_bound(tmp+,tmp+M+,r[i])-tmp;
adeg(l[i],r[i],w[i],);
}
for(i=;i<M;i++){
adeg(i,i+,,inf);
}adeg(M,T,,K);adeg(S,,,K);
int ans=;
while(spfa()){
int mi=inf;
for(i=T;i;i=eg[fae[i]^].b){
if(fae[i]) mi=min(mi,eg[fae[i]].l);
}
for(i=T;i;i=eg[fae[i]^].b){
eg[fae[i]].l-=mi,eg[fae[i]^].l+=mi;
}
ans+=mi*dis[T];
}
printf("%d\n",ans);
}
return ;
}

poj3680 Intervals (费用流)的更多相关文章

  1. poj 3680 Intervals(费用流)

    http://poj.org/problem?id=3680 巧妙的构图. 题目:给定N个区间(ai,bi)权值wi,求最大权和且每个点最多覆盖K次. 构图:将区间端点离散化,将第i个点连第i+1个点 ...

  2. poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙

    /** 题目:poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙 链接:http://poj.org/problem?id=3680 题意:给定n个区间,每个区间(ai,bi ...

  3. POJ-3680:Intervals (费用流)

    You are given N weighted open intervals. The ith interval covers (ai, bi) and weighs wi. Your task i ...

  4. 【POJ3680】Intervals(费用流)

    题意:有n条线段,每条有起点,终点和一个权值 要求选取一些线段,使它们的权值和最大,并且使每一个点被覆盖不超过k次 1 ≤ K ≤ N ≤ 200 1 ≤ ai < bi ≤ 100,000, ...

  5. POJ3680 Intervals —— 区间k覆盖问题(最小费用流)

    题目链接:https://vjudge.net/problem/POJ-3680 Intervals Time Limit: 5000MS   Memory Limit: 65536K Total S ...

  6. hdu-5988 Coding Contest(费用流)

    题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Ot ...

  7. POJ2195 Going Home[费用流|二分图最大权匹配]

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22088   Accepted: 11155 Desc ...

  8. BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]

    3130: [Sdoi2013]费用流 Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 960  Solved: 5 ...

  9. 洛谷 1004 dp或最大费用流

    思路: dp方法: 设dp[i][j][k][l]为两条没有交叉的路径分别走到(i,j)和(k,l)处最大价值. 则转移方程为 dp[i][j][k][l]=max(dp[i-1][j][k-1][l ...

随机推荐

  1. spring datasource jdbc 密码 加解密

    spring datasource 密码加密后运行时解密的解决办法 - 一号门-程序员的工作,程序员的生活(java,python,delphi实战)http://www.yihaomen.com/a ...

  2. Json详解以及fastjson使用教程

    Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免的会遇到Json的使 ...

  3. hihoCoder1033 交错和 数位DP

    题目:交错和 链接:http://hihocoder.com/problemset/problem/1033# 题意:对于一个十进制整数x,令a0.a1.a2.....an是x从高位到低位的数位,定义 ...

  4. 创建虚拟目录失败,必须为服务器名称指定“localhost”

    关于微信开发过程,远程调试后,再次打开vs出现项目加载失败的解决办法! 第一步: 第二步:打开编辑的页面,把下图这部分直接注释掉 ok了,再加载一次,就好了!

  5. 将Vue移动端项目打包成手机app---HBuilder

    将移动端页面打包成app 1.使用 HBuilder 直接编译打包 点击左上角 文件>打开目录>选择目录  选择用Webpack打包好的dist文件目录 由于我添加到项目了,所以会显示该项 ...

  6. CBV源码分析+APIVIew源码分析

    {drf,resful,apiview,序列化组件,视图组件,认证组件,权限组件,频率组件,解析器,分页器,响应器,URL控制器,版本控制} 一.CBV源码分析准备工作: 新建一个Django项目 写 ...

  7. java内部类 和外部类的区别

    java 内部类和静态内部类的区别  详细连接https://www.cnblogs.com/aademeng/articles/6192954.html 下面说一说内部类(Inner Class)和 ...

  8. python爬虫之MongoDB测试环境安装

    一.   下载 从http://www.mongodb.org/downloads地址中下载:mongodb-linux-x86_64-2.4.11.tar 二.  安装 1>设置mongoDB ...

  9. php分割中文字符串为数组的简单例子

    近日在做东西时,遇到要把中文字符进行逐字分割,试了很多方法,都不行,后来发现了一个超简单的方法: 分割字符串很简单,主要是用到函数preg_match_all.当处理含有中文的字符串时,可以用如下的方 ...

  10. git简介及安装(win10)

    一句话介绍git Git是Linus Torvalds编写,目前是世界上最先进的分布式版本控制系统. git能干什么? 代码备份.还原,版本管理,分支管理,解决冲突,协同开发... 安装git > ...