【链接】点击打开链接


【题意】


在这里写题意

【题解】


先设一个超级源点,向每个片区都建一条边,容量为b,费用为-a;
然后从每个片区再连一条边,指向一个超级汇点.
容量为d,费用为c;
然后从起点到汇点跑一下最大费用流就好.
(把spfa的最短路改成最长路就是最大费用流了);
这个费用流,在求只会出现正数的费用的时候是不用考虑那么多的.
显然我们这里是有负数的
所以有可能到了某个时刻,增广路得到的费用为负数,这个时候,我们就不能继续按照这条路卖东西了.
这意味着我们继续走的话,会亏本.
所以虽然还没得到最大流,也应该停手了.
只能按照之前的方案得到最大利润了,不能再继续做增广路了。
也就是说,有一些题目,在得到最大流之前,就可能已经得到最优的方案了.
(有负数的情况下);

【错的次数】


1

【反思】


边的个数一定要看清楚啊。
要记得你加了双向边。

【代码】

#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define ri(x) scanf("%d",&x)
#define rl(x) scanf("%lld",&x)
#define rs(x) scanf("%s",x)
#define oi(x) printf("%d",x)
#define ol(x) printf("%lld",x)
#define oc putchar(' ')
#define os(x) printf(x)
#define all(x) x.begin(),x.end()
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0) typedef pair<int,int> pii;
typedef pair<LL,LL> pll; const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 500;
const int NN = 1000 + 4000;
const int INF = 0x3f3f3f3f; struct abc{
    int from,en,flow,nex,cost;
}; int n,m,totm,fir[N+50],dis[N+50],pre[N+50],mi[N+50],ans;
abc bian[NN+100];
bool inq[N+50];
queue <int> dl; void add(int x,int y,int flow,int cost){
    bian[totm].nex = fir[x];
    fir[x] = totm;
    bian[totm].from = x;
    bian[totm].en = y;
    bian[totm].cost = cost;
    bian[totm].flow = flow;
    totm++;     bian[totm].nex = fir[y];
    fir[y] = totm;
    bian[totm].from = y;
    bian[totm].en = x;
    bian[totm].cost = -cost;
    bian[totm].flow = 0;
    totm++;
} bool spfa(int s,int t){
    ms(dis,-INF),ms(inq,0),ms(mi,INF);
    dis[s] = 0,inq[s] = 1;
    dl.push(s);
    pre[t] = -1;
    while (!dl.empty()){
        int x = dl.front();
        inq[x] = false;
        dl.pop();
        for (int i = fir[x];i!=-1;i = bian[i].nex){
            int y = bian[i].en;
            if (bian[i].flow && dis[y] < dis[x] + bian[i].cost){
                dis[y] = dis[x] + bian[i].cost;
                mi[y] = min(bian[i].flow,mi[x]);
                pre[y] = i;
                if (!inq[y]){
                    inq[y] = true;
                    dl.push(y);
                }
            }
        }
    }
    if (dis[t] < 0) return false;
    int now = t;
    while (now != s){
        int temp = pre[now];
        bian[temp].flow -= mi[t];
        bian[temp^1].flow += mi[t];
        now = bian[temp].from;
    }
    ans += dis[t]*mi[t];
    return true;
} int main(){
    //Open();
    //Close();
    while (~ri(n)){
        ri(m);
        ans = 0;
        totm = 0;
        ms(fir,255);
        rep1(i,1,n){
            int a,b,c,d;
            ri(a),ri(b),ri(c),ri(d);
            add(0,i,b,-a);
            add(i,n+1,d,c);
        }
        rep1(i,1,m){
            int x,y,k;
            ri(x),ri(y),ri(k);
            add(x,y,INF,-k);
            add(y,x,INF,-k);
        }
        while (spfa(0,n+1));
        oi(ans);puts("");
    }
    return 0;
}

【2017"百度之星"程序设计大赛 - 初赛(B)】度度熊的交易计划的更多相关文章

  1. 2017"百度之星"程序设计大赛 - 资格赛 1002 度度熊的王国战略

    全局最小割 Stoer-Wagner (SW算法)优化 优化吃藕了,感谢放宽时限,感谢平板电视 (pb_ds) #include <iostream> #include <cstdi ...

  2. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  4. HDU 6114 Chess 【组合数】(2017"百度之星"程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  5. HDU 6109 数据分割 【并查集+set】 (2017"百度之星"程序设计大赛 - 初赛(A))

    数据分割 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. HDU 6108 小C的倍数问题 【数学】 (2017"百度之星"程序设计大赛 - 初赛(A))

    小C的倍数问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. HDU 6122 今夕何夕 【数学公式】 (2017"百度之星"程序设计大赛 - 初赛(A))

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))

    度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. 2017"百度之星"程序设计大赛 - 初赛(A) [ hdu 6108 小C的倍数问题 ] [ hdu 6109 数据分割 ] [ hdu 6110 路径交 ] [ hdu 6112 今夕何夕 ] [ hdu 6113 度度熊的01世界 ]

    这套题体验极差. PROBLEM 1001 - 小C的倍数问题 题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6108 (2017"百度之星 ...

  10. [SinGuLaRiTy] 2017 百度之星程序设计大赛 初赛B

    [SinGuLaRiTy-1037] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. Chess Time Limit: 2000/1000 ...

随机推荐

  1. 第六课 Struts的视图组件

    Struts框架的视图负责为客户提供动态网页内容. Struts的视图主要由JSP网页构成.此外还包含客户化的标签和ActionForm Bean.这些组件提供了 对国际化.接收用户输入的表单数据.表 ...

  2. CCNP路由实验之十 组播(多播)

                        CCNP路由实验之十 组播(多播) 种方法: 在交换机上配置静态的多播MAC地址到用户接口的映射 使用CGMP.执行CGMP的多播路由器能够将用户发送给自己 ...

  3. hosts 文件与 ipv6

    ipv6 的项目地址:ipv6-hosts 正如文档中所说,用于在大陆地区加快 Google.YouTube.Facebook.Wikipedia 等的访问:(twitter 不支持) 使用说明(wi ...

  4. POJ 3275 两种做法

    题意: 思路: 1.Floyd传递闭包 n^3/32 勉强卡过去吧-- 2.用邻接表搞Floyd 也是勉强卡过去-- 最后用n*(n-1)-矩阵中为1的个数就OK了 传递闭包: //By Sirius ...

  5. OpenGL编程逐步深入(三)在窗口中显示一个三角形

    这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来. 本节我们以下图所示正方形来讲解OpenGl中的坐标系统.当沿着Z轴负方向看时,可见顶点的坐标必须在这个正 ...

  6. vuex requires a Promise polyfill in this browser.--ie-vue-兼容处理日记

    1.ie9+报错vuex requires a Promise polyfill in this browser. 解决如下: npm install --save-dev -polyfill 修改c ...

  7. Hexo 搭建

    前提 最近准备搭建一个博客平台,也看了很多开源的博客框架.比如Solo.wordpress等框架.自已曾经也在cnblog发布过几篇文章.东写写西写写.杂乱无章的.后续可以写一个自动同步各平台的程序~ ...

  8. 运输层协议——UDP

    UDP概述: UDP只是做了运输层协议能做的最少工作,仅做了复用/分解,少量的差错检验. UDP是无连接的. UDP优点: 关于何时.发送什么数据的应用层控制更为精细:TCP在拥堵时会遏制发送方的发送 ...

  9. Centos/RHEL :How to add,delete and display LVM tags

    1. 什么是LVM标签? 在你想开机启动时让逻辑卷被激活可用时,添加lvm标签是一个不错的选择.lvm标签允许那些被预先标记的实现这样的效果. 2. 配置文件 配置文件/etc/lvm/lvm.con ...

  10. Linux学习总结(1)——Linux命令大全完整版

    Linux命令大全完整版 目    录I 1. linux系统管理命令1 adduser1 chfn(change finger information)1 chsh(change shell)1 d ...