思路:
我们可以列出几个不等式
用y0带进去变成等式
下-上 可以消好多东西

我们发现 等式左边的加起来=0
可以把每个方程看成一个点

正->负 连边
跑费用流即可

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define int long long
#define mem(x,y) memset(x,y,sizeof(x))
const int N=24005,M=1005,inf=0x3f3f3f3f;
int edge[N],cost[N],v[N],w[N],first[M],next[N],tot,ans;
int n,m,xx,yy,zz,least[M],with[M],vis[N],d[M],minn[M];
void Add(int x,int y,int C,int E){edge[tot]=E,cost[tot]=C,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void add(int x,int y,int C,int E){Add(x,y,C,E),Add(y,x,-C,0);}
bool tell(){mem(with,0),mem(vis,0),mem(d,0x3f),mem(minn,0x3f);queue<int>q;q.push(0);d[0]=0;while(!q.empty()){int t=q.front();q.pop();vis[t]=0;for(int i=first[t];~i;i=next[i]){if(d[v[i]]>d[t]+cost[i]&&edge[i]){d[v[i]]=d[t]+cost[i],minn[v[i]]=min(minn[t],edge[i]),with[v[i]]=i;if(!vis[v[i]])vis[v[i]]=1,q.push(v[i]);}}}return d[n+1]<inf;
}
int zeng(){for(int i=n+1;i;i=v[with[i]^1])edge[with[i]]-=minn[n+1],edge[with[i]^1]+=minn[n+1];return minn[n+1]*d[n+1];
}
signed main(){mem(first,-1);scanf("%lld%lld",&n,&m);for(int i=1;i<=n;i++){scanf("%lld",&least[i]);if(least[i]-least[i-1]>0)add(0,i,0,least[i]-least[i-1]);else add(i,n+1,0,least[i-1]-least[i]); if(i!=n)add(i+1,i,0,inf);}for(int i=1;i<=m;i++)scanf("%lld%lld%lld",&xx,&yy,&zz),add(xx,yy+1,zz,inf);while(tell())ans+=zeng();printf("%lld\n",ans);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532015.html

BZOJ 1061费用流相关推荐

  1. bzoj 2245(费用流)

    2245: [SDOI2011]工作安排 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 1442  Solved: 689 [Submit][Sta ...

  2. BZOJ 1283 费用流

    思路: 最大费用最大流 i->i+1 连边k 费用0 i->i+m (大于n的时候就连到汇) 连边1 费用a[i] //By SiriusRen #include <queue> ...

  3. BZOJ 4514 费用流

    思路: 懒得写了 http://blog.csdn.net/werkeytom_ftd/article/details/51277482 //By SiriusRen #include <que ...

  4. BZOJ 1061: [Noi2008]志愿者招募 最小费用最大流

    title BZOJ 1061 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经 ...

  5. Gym 101190D BZOJ 4842 Luogu P6967 LOJ #6071 [NEERC2016]Delight for a Cat (费用流)

    题目链接 (BZOJ) 大人,时代变了 (Gym) https://codeforces.com/gym/101190 (Luogu) https://www.luogu.com.cn/problem ...

  6. BZOJ 1920 Luogu P4217 [CTSC2010]产品销售 (模拟费用流、线段树)

    题目链接 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=1920 (luogu) https://www.luogu.org/prob ...

  7. BZOJ 5326 [JSOI2017]博弈 (模拟费用流、线段树)

    题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=5326 题解 终于成为第8个A掉这题的人--orz tzw神仙早我6小时 本以为这东西常数 ...

  8. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com ...

  9. BZOJ.2597.[WC2007]剪刀石头布(费用流zkw)

    BZOJ 洛谷 \(Description\) 给定一张部分边方向已确定的竞赛图.你需要给剩下的边确定方向,使得图中的三元环数量最多. \(n\leq100\). \(Solution\) 这种选择之 ...

最新文章

  1. java字节流6_JavaIO流之字节流
  2. 关于Unity中从服务器下载资源压缩包AssetBundle的步骤
  3. 赞!史上最全的互联网思维精髓总结
  4. git如何切换分支_如何让 Jenkins 支持选择 git 分支进行构建
  5. 计算机应用基础计算配置教案,[定稿]计算机应用基础教案_Windows_XP版V8.1(全文完整版)...
  6. Activity与AppCompatActivity全屏实现方法
  7. perl语言学习笔记(3)列表与数组、子程序’、参数
  8. yum下载rpm包、源码包安装
  9. dtproperties表小解[网络收集]
  10. 递归 人理解循环 神理解递归
  11. 兼容性测试中如何切换和管理多个JDK版本
  12. python操作word实现小学拼音本功能
  13. 马斯克 超级计算机,超级计算机升空 马斯克的SpaceX负责运送
  14. javascript 表单提交和验证的方法
  15. AtCoder Beginner Contest 178 C
  16. 高德地图怎么搜索marker_高德地图——通过地名标注marker
  17. 一款优雅的消息提示插件Message.js
  18. Kettle CSV文件与json文件转换实例
  19. android电子英语词典背景介绍,实现基于Android的英文电子词典
  20. 服务器ssd硬盘接笔记本,让你的老本满血复活,笔记本固态硬盘升级指南

热门文章

  1. python爬虫案例-python爬虫详细解析附案例
  2. python软件安装教程-python软件安装
  3. python爬虫正则表达式实例-python爬虫 正则表达式解析
  4. python运行程序-一文看懂python程序的执行过程
  5. vs下载python最后一点很慢-python读取大文件越来越慢的原因与解决
  6. python代码壁纸-一个爬取壁纸的python代码
  7. python自学多久可以找到工作-25岁从零开始学习python还能找到工作吗?
  8. python读取txt文件内容-python如何获取txt文本文件中的内容
  9. python爬虫工程师-Python-爬虫工程师-面试总结
  10. python的工作方向-python工作方向,发展方向?