Poj3680 Intervals

这题比较经典,题意大致上就是给你n个点和m个区间,每个区间有一个正权值,让你选出一些区间,使得每个点都不会被覆盖超过k次,且选出的区间权值和最大。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

lyd:

首先把区间端点离散化,设原来的数值i离散化后的标号是c[i]。这样离散化之后,整个数轴被分成了一段段小区间。 1.建立S和T,从S到离散化后的第一个点连容量K,费用0的边。离散化后的最后一个点到T连容量K、费用0的边。 2.离散化后的相邻点之间(从i到i+1)连容量为K,费用为0的边。 3.输入的区间从离散化后的左端点到右端点连容量1、费用W的边。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

为什么要这样呢?为什么这样可行呢?

Poj3680 Intervals

时间: 2024-11-09 15:19:37

Poj3680 Intervals的相关文章

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

/** 题目:poj3680 Intervals 区间k覆盖问题 最小费用最大流 建图巧妙 链接:http://poj.org/problem?id=3680 题意:给定n个区间,每个区间(ai,bi),以及权值wi.选出一些区间,满足权值和最大且任何一个点不会被超过k个区间覆盖. 思路: 建图:对于每个区间(ai,bi). ai->bi,cap = 1,cost = -wi; (离散化后的ai,bi) 所有区间的端点放到数组,进行从小到大排序,去重,离散化,在数组内相邻的u端点,v端点.u->

解题报告 之 POJ3680 Intervals

解题报告 之 POJ3680 Intervals Description You are given N weighted open intervals. The ith interval covers (ai, bi) and weighs wi. Your task is to pick some of the intervals to maximize the total weights under the limit that no point in the real axis is c

POJ3680 Intervals(最小费用最大流)

选择若干条线段使权值最大,并且点覆盖次数不超过k. 建图如下:vs到0建立容量为k费用为0的边:坐标终点到vt连接一条容量为k费用为0的边:对于每两个相邻坐标连接一条容量为INF费用为0的边:对于线段每两个端点连接一条容量1费用为-cost的边. 这样跑最小费用最大流.相当于找出k个线段集合,每个集合的线段都不重合.原问题就这样求解. 1 #include<cstdio> 2 #include<cstring> 3 #include<queue> 4 #include&

poj3680 Intervals (费用流)

建图((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] 然后跑最大费用最大流 因为没有负权值,所以肯定尽量跑满 1 #include<cstring> 2 #include<cstdio> 3 #include<algorithm> 4 #include<queue> 5 #define CLR(a,x) m

精辟!

观察发现,每个变量都在两个式子中出现了,而且一次为正,一次为负.所有等式右边和为0.接下来,根据上面五个等式构图. 每个等式为图中一个顶点,添加源点S和汇点T. 如果一个等式右边为非负整数c,从源点S向该等式对应的顶点连接一条容量为c,权值为0的有向边:如果一个等式右边为负整数c,从该等式对应的顶点向汇点T连接一条容量为c,权值为0的有向边. 如果一个变量X[i]在第j个等式中出现为X[i],在第k个等式中出现为-X[i],从顶点j向顶点k连接一条容量为∞,权值为V[i]的有向边. 如果一个变量

POJ3680:Intervals(离散化+最大流最小费用)

Intervals Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9320   Accepted: 4014 题目链接:http://poj.org/problem?id=3680 Description: You are given N weighted open intervals. The ith interval covers (ai, bi) and weighs wi. Your task is to pic

2014湘潭全国邀请赛I题 Intervals /POJ 3680 / 在限制次数下取有权区间使权最大/小问题(费用流)

先说POJ3680:给n个有权(权<10w)开区间(n<200),(区间最多数到10w)保证数轴上所有数最多被覆盖k次的情况下要求总权最大,输出最大权. 思路:       限制的处理:s-->开始流量为k,要求总权最大,即费用最大,所以费用取负,最小费用最大流即可.对于输入区间[a,b]:w,添加边:a-->b,流量为1,费用为-w. 对于点i,i+1,添加边,费用为0,流量无穷.显然这种处理,限制了区间最多取k次,(流量控制),跑最大流能走添加的边尽量走,且越大越好(负数刚刚是

PKU1201 Intervals

Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end points and integers c1, ..., cn from the standard input, computes the minimal size of a set Z of

POJ1201 Intervals查分约束系统(最短路)

Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end points and integers c1, ..., cn from the standard input, computes the minimal size of a set Z of