建图((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) memset(a,x,sizeof(a))
  6. #define MP make_pair
  7. using namespace std;
  8. typedef long long ll;
  9. typedef unsigned long long ull;
  10. typedef pair<int,int> pa;
  11. const int maxn=,maxp=,inf=1e9;
  12.  
  13. inline ll rd(){
  14. ll x=;char c=getchar();int neg=;
  15. while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
  16. while(c>=''&&c<='') x=x*+c-'',c=getchar();
  17. return x*neg;
  18. }
  19.  
  20. int l[maxn],r[maxn],w[maxn],N,M,K,tmp[maxp],S=,T=;
  21. struct Edge{
  22. int b,l,ne,c;
  23. }eg[maxp*];
  24. int egh[maxp],ect=;
  25. int dis[maxp],fae[maxp];
  26. bool flag[maxp];
  27.  
  28. inline void adeg(int a,int b,int c,int l){
  29. // printf("~%d %d %d %d\n",a,b,c,l);
  30. eg[++ect].b=b,eg[ect].l=l,eg[ect].c=c,eg[ect].ne=egh[a],egh[a]=ect;
  31. eg[++ect].b=a,eg[ect].l=,eg[ect].c=-c,eg[ect].ne=egh[b],egh[b]=ect;
  32. }
  33.  
  34. queue<int> q;
  35. inline bool spfa(){
  36. CLR(dis,-);dis[S]=;
  37. CLR(fae,);q.push(S);
  38. while(!q.empty()){
  39. int p=q.front();q.pop();
  40. // printf("~%d %d\n",p,dis[S]);
  41. flag[p]=;
  42. for(int i=egh[p];i;i=eg[i].ne){
  43. int b=eg[i].b;if(!eg[i].l) continue;
  44. // printf("!!%d %d %d\n",b,eg[i].c,eg[i].l);
  45. if(dis[b]<dis[p]+eg[i].c){
  46. dis[b]=dis[p]+eg[i].c;
  47. fae[b]=i;
  48. if(!flag[b]) q.push(b),flag[b]=;
  49. }
  50. }
  51. }return dis[T]>=;
  52. }
  53.  
  54. int main(){
  55. //freopen("","r",stdin);
  56. int i,j,k;
  57. for(int t=rd();t;t--){
  58. N=rd(),K=rd();
  59. for(i=;i<=N;i++){
  60. tmp[i]=l[i]=rd(),tmp[i+N]=r[i]=rd(),w[i]=rd();
  61. }sort(tmp+,tmp+N+N+);
  62. int M=unique(tmp+,tmp+N+N+)-tmp-;
  63. CLR(egh,);ect=;
  64. for(i=;i<=N;i++){
  65. l[i]=lower_bound(tmp+,tmp+M+,l[i])-tmp;
  66. r[i]=lower_bound(tmp+,tmp+M+,r[i])-tmp;
  67. adeg(l[i],r[i],w[i],);
  68. }
  69. for(i=;i<M;i++){
  70. adeg(i,i+,,inf);
  71. }adeg(M,T,,K);adeg(S,,,K);
  72. int ans=;
  73. while(spfa()){
  74. int mi=inf;
  75. for(i=T;i;i=eg[fae[i]^].b){
  76. if(fae[i]) mi=min(mi,eg[fae[i]].l);
  77. }
  78. for(i=T;i;i=eg[fae[i]^].b){
  79. eg[fae[i]].l-=mi,eg[fae[i]^].l+=mi;
  80. }
  81. ans+=mi*dis[T];
  82. }
  83. printf("%d\n",ans);
  84. }
  85. return ;
  86. }

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. php开发之常用验证方法

    1.邮箱验证 function isEmail($email) { if (!$email) { return false; } return preg_match('/^[_\.0-9a-z-]+@ ...

  2. [转帖]Ipvsadm参数详解(常用命令)

    Ipvsadm参数详解(常用命令) 2013年11月29日 12:41:40 怀素1980 阅读数:15901   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  3. input & collapse & tags

    input & collapse & tags https://ant.design/components/tag-cn/ https://www.iviewui.com/compon ...

  4. JAVA不可变类(immutable)机制与String的不可变性--非常好.

    JAVA不可变类(immutable)机制与String的不可变性 https://www.cnblogs.com/jaylon/p/5721571.html

  5. Vue之computed计算属性

    demo.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/19 ...

  6. easyui combobox 在datagrid中动态加载数据

    场景:datagrid 中用编辑框修改数据,有一个列使用的combobox  在可编辑的时候需要动态绑定数据,这个数据是在根据其他条件可变的 思路:在每次开启编辑框的时候动态绑定数据, datagri ...

  7. vue 关于生命周期

    序言: 1. vue 单组件的生命周期: 2. vue 父子组件的生命周期: 3. axios 异步请求 与 vue 的组件周期: 一.vue 每个组件的生命周期 关于每个组件的生命周期,官方文档里也 ...

  8. Vue过渡状态

    前面的话 Vue 的过渡系统提供了非常多简单的方法设置进入.离开和列表的动效.那么对于数据元素本身的动效呢?包括数字和运算.颜色的显示.SVG 节点的位置.元素的大小和其他的属性等.所有的原始数字都被 ...

  9. css 媒体查询 注意点

    1, 媒体查询表达式之间还可以用逗号,@media (max-width:800px), print  它表示或的意思 @media (max-width: 800px) OR print; 2, n ...

  10. Nginx 磁盘IO的优化

    L:132