zoukankan      html  css  js  c++  java
  • 【uva11613】生产销售规划

    这很像之前做的一道noip模拟题……

    所以当时那题也可以用费用流写(雾)

    拆点,将每个月拆成两个点,一个向起点连边表示产量,另一个点连汇点表示销量。

    然后每个点依次往后面的点2连边,表示保存。

    #include<bits/stdc++.h>
    #define N 10005
    #define inf 1000000007
    #define naive 0
    using namespace std;
    typedef long long ll;ll ans=naive;
    int wy,n,m,I,head[N],tot=naive,pre[N],inq[N],dis[N],s,t;
    struct Edge{int u,v,next,f,c;}G[100010];
    inline void addedge(int u,int v,int f,int c){
        G[tot].u=u;G[tot].v=v;G[tot].f=f;G[tot].c=c;G[tot].next=head[u];head[u]=tot++;
        G[tot].u=v;G[tot].v=u;G[tot].f=0;G[tot].c=-c;G[tot].next=head[v];head[v]=tot++;
    }
    inline bool bfs(int s,int t){
        memset(inq,naive,sizeof(inq));memset(pre,-1,sizeof(pre));for(int i=s;i<=t;i++)dis[i]=inf;
        queue<int>q;q.push(s);dis[s]=naive;
        while(!q.empty()){
            int u=q.front();q.pop();inq[u]=0;
            for(int i=head[u];~i;i=G[i].next){
                int v=G[i].v,f=G[i].f,c=G[i].c;
                if(f&&dis[v]>dis[u]+c){pre[v]=i;dis[v]=dis[u]+c;inq[v]=1;q.push(v);}
            }
        }
        return dis[t]!=inf;
    }
    void mcmf(int s,int t){
        while(bfs(s,t)){
            int x=inf;if(dis[t]>0)return;
            for(int i=pre[t];~i;i=pre[G[i].u])x=min(x,G[i].f);
            for(int i=pre[t];~i;i=pre[G[i].u])G[i].f-=x,G[i^1].f+=x,ans+=1LL*G[i].c*x;
        }
    }
    inline int read(){
        int f=1,x=0;char ch;
        do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
        do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
        return f*x;
    }
    int main(){
        int T=read();
        while(T--){
            m=read();I=read();ans=naive;memset(head,-1,sizeof(head));tot=naive;t=2*m+1;s=naive;
            for(int i=1;i<=m;i++){
                int c1=read(),f1=read(),c2=read(),f2=read(),x=read();
                addedge(s,i,f1,c1);addedge(i+m,t,f2,-c2);
                for(int j=i;j<=min(i+x,m);j++)addedge(i,j+m,inf,I*(j-i));
            }
            mcmf(s,t);printf("Case %d: %lld
    ",++wy,-ans);
        }
    }
  • 相关阅读:
    Android BitmapFactory.Options
    Android TabHost
    Android 黑色样式menu
    Android Tab与TabHost
    Android Theme
    Activity 四种launchMode
    IOS xcode安装
    BaseActivity合集
    自定义BaseActivity
    Fragment 底部菜单栏
  • 原文地址:https://www.cnblogs.com/zcysky/p/7071067.html
Copyright © 2011-2022 走看看