zoukankan      html  css  js  c++  java
  • codeforces724E Goods transportation(最小割——dp)

    题意:

    原点汇点连所有的,流量给出,左边点连右边的,流量为c,问最大流

    思路:

    /* ***********************************************
    Author        :devil
    ************************************************ */
    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <set>
    #include <stack>
    #include <map>
    #include <string>
    #include <cmath>
    #include <stdlib.h>
    #define LL long long
    #define rep(i,a,b) for(int i=a;i<=b;i++)
    #define dep(i,a,b) for(int i=a;i>=b;i--)
    #define ou(a) printf("%d
    ",a)
    #define pb push_back
    #define mkp make_pair
    template<class T>inline void rd(T &x)
    {
        char c=getchar();
        x=0;
        while(!isdigit(c))c=getchar();
        while(isdigit(c))
        {
            x=x*10+c-'0';
            c=getchar();
        }
    }
    #define IN freopen("in.txt","r",stdin);
    #define OUT freopen("out.txt","w",stdout);
    using namespace std;
    const LL inf=1ll<<60;
    const int mod=1e9+7;
    const int N=1e4+10;
    LL dp[N],s[N],p[N],c,ans;
    int n;
    int main()
    {
        #ifndef ONLINE_JUDGE
        IN
        #endif
        rd(n),rd(c);
        rep(i,1,n) rd(p[i]);
        rep(i,1,n) rd(s[i]);
        rep(i,1,n)
        {
            dp[i]=inf;
            dep(j,i,1) dp[j]=min(dp[j-1]+s[i],dp[j]+p[i]+1ll*c*j);
            dp[0]+=p[i];
        }
        ans=dp[0];
        rep(i,1,n) ans=min(ans,dp[i]);
        printf("%I64d
    ",ans);
        return 0;
    }
  • 相关阅读:
    推荐:Markdown编辑软件 --- 小书匠
    GoldenDict词典配置
    ivew admin
    FineUI学习网址
    博客主题说明网址
    Xshell,Xftp免费版下载方法
    linux 常用命令及操作
    Oracle数据库随机取某条记录的一个字段值
    service和ingress
    centos7离线安装docker (二进制)
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/5949393.html
Copyright © 2011-2022 走看看