poj 3680 Intervals 费用流
来源:互联网 发布:南京银行怎么样 知乎 编辑:程序博客网 时间:2024/06/05 17:23
#include <stdio.h>#include <iostream>#include <string.h>#include <algorithm>using namespace std;const int MAXN=40000;const int MAXE=20000000;const int inf=1<<30;int head[MAXN],s,t,cnt,ans;int d[MAXN],pre[MAXN];bool vis[MAXN];int q[MAXE];int le[210],ri[210],fee[210];int a[500],b[500];int pos;struct Edge{ int u,v,c,w,next;}edge[MAXE];void addedge(int u,int v,int w,int c){ edge[cnt].u=u; edge[cnt].v=v; edge[cnt].w=w; edge[cnt].c=c; edge[cnt].next=head[u]; head[u]=cnt++; edge[cnt].v=u; edge[cnt].u=v; edge[cnt].w=-w; edge[cnt].c=0; edge[cnt].next=head[v]; head[v]=cnt++;}int SPFA(){ int l,r; memset(pre,-1,sizeof(pre)); memset(vis,0,sizeof(vis)); for(int i=0;i<=t;i++) d[i]=inf; d[s]=0; l=0;r=0; q[r++]=s; vis[s]=1; while(l<r) { int u=q[l++]; vis[u]=0; for(int j=head[u];j!=-1;j=edge[j].next) { int v=edge[j].v; if(edge[j].c>0&&d[u]+edge[j].w<d[v]) { d[v]=d[u]+edge[j].w; pre[v]=j; if(!vis[v]) { vis[v]=1; q[r++]=v; } } } } if(d[t]==inf) return 0; return 1;}void MCMF(){ int flow=0; while(SPFA()) { int u=t; int mini=inf; while(u!=s) { if(edge[pre[u]].c<mini) mini=edge[pre[u]].c; u=edge[pre[u]].u; } flow+=mini; u=t; ans+=d[t]*mini; while(u!=s) { edge[pre[u]].c-=mini; edge[pre[u]^1].c+=mini; u=edge[pre[u]].u; } }}int bin(int u){ int l=1,r=pos,m=(l+r)/2; while(l<=r) { m=(l+r)/2; if(u==b[m]) return m; else if(u>b[m]) l=m+1; else if(u<b[m]) r=m-1; }}int main(){ int n,k; int cas; int i,j; scanf("%d",&cas); while(cas--) { scanf("%d%d",&n,&k);cnt=0;int now=0;for(i=1;i<=n;i++){ scanf("%d%d%d",&le[i],&ri[i],&fee[i]); a[now++]=le[i]; a[now++]=ri[i];}sort(a,a+now);b[1]=a[0];pos=1;for(i=1;i<now;i++) if(a[i]!=b[pos]) b[++pos]=a[i]; //for(i=1;i<=pos;i++)printf("%d ",b[i]); //printf("\n"); s=0;t=pos+1; //printf(" %d %d\n",s,t); for(i=0;i<=t;i++) head[i]=-1; for(i=1;i<=n;i++) { int u,v; u=bin(le[i]); v=bin(ri[i]); //printf("%d %d\n",u,v); addedge(u,v,-fee[i],1); } for(i=0;i<t;i++) addedge(i,i+1,0,k); ans=0; MCMF(); printf("%d\n",-ans); } return 0;}
0 0
- poj 3680 Intervals 费用流
- poj 3680 Intervals 费用流
- poj 3680 Intervals(费用流)
- [费用流] POJ 3680 Intervals
- 【POJ】 3680 Intervals 离散 + 费用流
- POJ 3680 Intervals(最小费用流)
- POJ 3680 Intervals(离散化+费用流)
- poj 3680 Intervals (最小费用最大流)
- POJ 3680 Intervals(经典费用流)
- poj 3680 Intervals 最大费用流
- POJ 3680 Intervals 费用流+离散化
- poj 3680 Intervals (离散化+费用流)
- POJ 3680 Intervals(最小费用流)
- poj 3680 Intervals(离散化+费用流)
- Intervals poj 3680 最小费用最大流
- POJ 2680 Intervals 费用流
- POJ 3680 Intervals (最小费用最大流+离散化)
- poj 3680 Intervals(最大费用流+离散化)
- 求大神把这个橡皮筋技术代码用类封装!!!!
- memcache和memcached区别
- Hive metastore三种配置方式
- 杭电1872 稳定排序
- MiniFilter 学习
- poj 3680 Intervals 费用流
- memcache相关基础
- Could not load the Tomcat server configuration
- zookeeper源码分析-client分析
- 报 partial is not defined异常 解决方法?
- 程序设计实习MOOC/第十五周编程作业/B:A Knight's Journey(TUD Programming Contest 2005, Darmstadt, Germany)
- 在Eclipse中搭建cocos2d-x的Android开发环境(免cygwin)
- OVS处理upcall过程分析
- 使用窗体控件的几个总结