ZOJ3508 The War 贪心,最大流
来源:互联网 发布:网络dns错误是什么原因 编辑:程序博客网 时间:2024/05/17 05:03
传送门:I Am Here
常规解法是贪心,但是在复习最大流的写法,因此用sap来写的。思路是很好想的
#include<cstdio>#include<cstdlib>#include<iostream>#include<cstring>#include<algorithm>#include<memory.h>#include<cmath>using namespace std;const int M=2510000;int s,t,cnt;int a[4000],b[4000],num[1010];;const int inf=1000000;int vd[4001],dis[4001],ans,m,n;int Laxt[M],Next[M],Val[M],To[M];void _update(){memset(vd,0,sizeof(vd));memset(dis,0,sizeof(dis));memset(a,0,sizeof(a));memset(b,0,sizeof(b)); memset(To,0,sizeof(To)); memset(num,0,sizeof(num)); memset(Laxt,0,sizeof(Laxt)); memset(Next,0,sizeof(Next));memset(Val,0,sizeof(Val));ans=0;cnt=2;//不从0开始最好s=0;t=1000+n+1; }void _add(int u,int v,int w){Next[cnt]=Laxt[u];Laxt[u]=cnt;To[cnt]=v;Val[cnt++]=w;Next[cnt]=Laxt[v];Laxt[v]=cnt;To[cnt]=u;Val[cnt++]=0;}int dfs(int u,int flow){ int temp,delta; if(u==t)return flow; delta=0; for(int i=Laxt[u];i>0;i=Next[i]) //这里的0限制了cnt不从0开始 if(Val[i]>0 && dis[u]==dis[To[i]]+1) { temp=dfs(To[i],min(flow-delta,Val[i])); Val[i]-=temp; Val[i^1]+=temp; delta+=temp; if(delta==flow||dis[s]>t) return delta; } vd[dis[u]]--; if(vd[dis[u]]==0)dis[s]=t+1; dis[u]++; vd[dis[u]]++; return delta;}void _work(){ int i,j,x,y; for(i=1;i<=n;i++)
cin>>a[i]>>b[i]; for(i=1;i<=m;i++) { cin>>x; num[x]++; } for(i=1;i<=1000;i++) if(num[i]>0) _add(s,i,num[i]); for(i=1;i<=1000;i++) for(j=1;j<=n;j++){ if(i>=a[j]&&i<=b[j]) _add(i,1000+j,1); } for(j=1;j<=n;j++) _add(1000+j,t,1); int temp=0; while(dis[s]<t+1) { int flow=dfs(s,inf); ans+=flow; } cout<<ans<<endl; }int main(){ while(cin>>n>>m) { _update(); _work();} return 0;}
阅读全文
0 0
- ZOJ3508 The War 贪心,最大流
- zoj3508 The War 贪心
- The War&&贪心算法
- ZOJ 3508 The War 贪心
- ZOJ 3508 The War 贪心
- ZOJ 3508 The War(贪心)
- zoj 3508 The War 贪心
- ZOJ 3508 The War(贪心)
- ZOJ 3058 The War(简单贪心)
- ZOJ 3508 ——The War 贪心
- ZOJ-#3508 The War(贪心)
- The War
- ZOJ3508_The War(网络流最大流)
- hdu 3599 War(最短路+最大流)
- Commando War-uva 贪心
- 【贪心】【Uva11729】 Commando War
- Commando War uva11729(贪心)
- UVA11729 Commando War (贪心)
- 《并发编程》--7.声明线程组
- Object转JSON,子类读父类内容
- 十三章 分组数据 GROUP BY ,HAVING
- 从 AngularJS 模块定义说起
- 网络营销实战课-笔记2
- ZOJ3508 The War 贪心,最大流
- Xmind基础教程-保存到印象笔记
- iOS将状态栏设置成白色
- linux内核设计与实现---定时器和时间管理(11)
- 使用一个定时器和回调函数防止代码阻塞
- Python几个特殊语法的使用实例
- png转jpg具体操作方法
- yii2 RESTful 接口 api -2 : 自定义函数
- 3-sum问题平方对数级别解法(algs4)