【bzoj1221】[HNOI2001] 软件开发
2016-01-03 11:18
323 查看
这个题一定要说点什么。。
这种错误的方法已经犯过两次了:
s->i i->i’流量为每日需求量 i’再去连其他可以通过消毒用的天数 这样的拆点有卵用嘛。。
拆点的意义在于新建一个点使得购买的毛巾不消失 而是重新利用 因为每天都会有x的脏毛巾产生 所以每天可以拿去消毒的毛巾就有x 并且最需要注意的是这里毛巾是只要用过随时都可以消毒的 所以i’要往i’+1连边
这种错误的方法已经犯过两次了:
s->i i->i’流量为每日需求量 i’再去连其他可以通过消毒用的天数 这样的拆点有卵用嘛。。
拆点的意义在于新建一个点使得购买的毛巾不消失 而是重新利用 因为每天都会有x的脏毛巾产生 所以每天可以拿去消毒的毛巾就有x 并且最需要注意的是这里毛巾是只要用过随时都可以消毒的 所以i’要往i’+1连边
#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #include<queue> #include<cmath> using namespace std; const int N=2011; const int M=N*500; const int inf=0x7fffffff; int head ,next[M],key[M],w[M],cost[M],tot; int dist ,inq ,fr ,mn ;queue<int>q; int S,T; void add(int x,int y,int z,int c) { tot++;next[tot]=head[x];head[x]=tot;key[tot]=y;w[tot]=z;cost[tot]=c; tot++;next[tot]=head[y];head[y]=tot;key[tot]=x;w[tot]=0;cost[tot]=-c; } void bili() { tot=-1; memset(head,-1,sizeof(head)); } int spfa() { for(int i=S;i<=T;i++)dist[i]=inf,mn[i]=inf; dist[S]=0; q.push(S); while(!q.empty()) { int x=q.front(); q.pop(); inq[x]=0; for(int i=head[x];i!=-1;i=next[i]) { int y=key[i]; if(w[i]&&dist[y]>dist[x]+cost[i]) { dist[y]=dist[x]+cost[i]; fr[y]=i; mn[y]=min(mn[x],w[i]); if(inq[y]==0)q.push(y),inq[y]=1; } } } if(dist[T]==inf)return 0; return 1; } long long zeng() { for(int i=T;i!=S;i=key[fr[i]^1]) w[fr[i]]-=mn[T],w[fr[i]^1]+=mn[T]; return (long long)dist[T]*mn[T]; } int main() { bili(); int n,a,b,f,fa,fb; cin>>n>>a>>b>>f>>fa>>fb; S=0,T=n*2+1; for(int i=1;i<=n;i++) { int x; scanf("%d",&x); add(S,i,inf,f); add(i,T,x,0); add(S,i+n,x,0); if(i+1<=n)add(i+n,i+n+1,inf,0); if(i+a+1<=n)add(i+n,i+a+1,inf,fa); if(i+b+1<=n)add(i+n,i+b+1,inf,fb); } int ans=0; while(spfa())ans+=zeng(); printf("%d",ans); }
相关文章推荐
- find 命令
- Android 百度地图经纬度转换成地址
- SQL Server XML 入门 基础
- Oracle中RAISE异常深入分析
- Thrift入门及Java实例
- 【python】SIR模型实现
- 如何使用.htaccess重定向网站多个目录
- linux下声卡编程
- 在VMWARE虚拟机中的linux(centos)系统安装VMware tools的方法
- Android 4.4(API 19)闹钟管理与计步器功能
- 第二部分 Hibernate的基本配置
- matlab中find函数的使用说明
- xampp开启php-debug
- leetcode之Populating Next Right Pointers in Each Node
- 关于排序算法
- 单片机笔记之按键
- 第一部分 Hibernate入门
- 目录文件处理命令
- iOS 单元測试之XCTest具体解释(一)
- python 代码片段6