bzoj1061 志愿者招募
传送门
分析
https://www.luogu.org/problemnew/solution/P3980
代码
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cctype> #include<cmath> #include<cstdlib> #include<queue> #include<ctime> #include<vector> #include<set> #include<map> #include<stack> #include<climits> using namespace std; const int inf = INT_MAX; int n,m,f[40010],mf[40010],pre[40010],from[40010]; int head[40010],nxt[40010],to[40010]; int cost[40010],ath[40010],fr[40010],cnt; int d[40010]; bool iq[40010]; int s,t,Ans; int q[400100],fi,la; inline void add(int x,int y,int z,int c){nxt[++cnt]=head[x];head[x]=cnt;to[cnt]=y;f[cnt]=z;cost[cnt]=c;fr[cnt]=x;nxt[++cnt]=head[y];head[y]=cnt;to[cnt]=x;f[cnt]=0;cost[cnt]=-c;fr[cnt]=y;ath[cnt]=cnt-1;ath[cnt-1]=cnt; } inline void go(){register int i;while(1){for(i=s;i<=t;i+=4)d[i]=d[i+1]=d[i+2]=d[i+3]=inf;fi=la=100001;q[fi]=s;d[s]=0;iq[s]=1;int flow=inf;while(fi<=la){int x=q[fi];fi++;iq[x]=0;if(d[x]>=inf)continue;for(i=head[x];i;i=nxt[i]){if(f[i]&&d[to[i]]>d[x]+cost[i]){d[to[i]]=d[x]+cost[i];pre[to[i]]=i;flow=min(flow,f[i]);if(!iq[to[i]]){if(d[to[i]]>d[q[fi]])q[++la]=to[i];else q[--fi]=to[i];iq[to[i]]=1;}}} }if(d[t]>=inf)return;int wh=pre[t];while(wh){f[wh]-=flow;f[ath[wh]]+=flow;Ans+=flow*cost[wh];wh=pre[fr[wh]];}} } inline int ra(){int x=0,f=1;char s=getchar();while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}while(isdigit(s))x=(x<<3)+(x<<1)+(s-'0'),s=getchar();return x*f; } int main(){register int i;n=ra(),m=ra();s=0,t=n+2;for(i=1;i<=n;++i){int x;x=ra();add(i,i+1,inf-x,0);}add(s,1,inf,0),add(n+1,n+2,inf,0);for(i=1;i<=m;++i){int x,y,z;x=ra(),y=ra(),z=ra();add(x,y+1,inf,z);}go();printf("%d\n",Ans);return 0; }
转载于:https://www.cnblogs.com/yzxverygood/p/9973454.html
bzoj1061 志愿者招募相关推荐
- 【NOI2008】BZOJ1061志愿者招募
1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 3028 Solved: 1872 Description 申 ...
- bzoj1061 志愿者招募
题意:给m类志愿者,第i个志愿者从第 l[ i ] 天工作到第 r[ i ] 天,费用为c[ i ].每种志愿者可以选择无限多人. 每一天都有给定的最少志愿者数目要求a[ i ],求费用最小的选择方 ...
- [BZOJ1061][Noi2008]志愿者招募
[BZOJ1061][Noi2008]志愿者招募 试题描述 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿 ...
- 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
[BZOJ1061][Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募 ...
- 【BZOJ1061】【NOI2008】志愿者招募
[BZOJ1061][NOI2008]志愿者招募 题面 BZOJ 题解 我们设每类志愿者分别招募了\(B[i]\)个 那么,我们可以得到一系列的方程 \[\sum_{S[i]\leq x\leq T[ ...
- BZOJ1061 [NOI2008]志愿者招募
Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能 ...
- BZOJ1061: [Noi2008]志愿者招募
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 1061: [Noi2008]志愿者招募 Time Limit: 20 Sec M ...
- 【费用流】BZOJ1061: [Noi2008]志愿者招募(这题超好)
1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 5291 Solved: 3173 [Submit][St ...
- [BZOJ1061] [NOI2008] 志愿者招募 - 最小费用最大流
大部分内容转自: BYVOID - NOI2008 志愿者招募 如果讲道理的话,就是说我们抽象一下这个模型--然后每条费用边就是连接起始日期和结束日期的边,也就是说这条边上的流量增加1,就要增加一个 ...
- .NET Conf China 2020志愿者招募火热开启!还有神秘惊喜等你来领…
距.NET Conf China 2020 2020 中国 .NET 开发者大会 开幕还有14天 作为.NET的组织者之一 我们已经为这个活动准备铺垫了很久 但为了保证活动方方面面的质量 为了给现场& ...
最新文章
- Attic——删除重复数据的备份程序
- windows 7 安装及.net开发环境搭建
- javafx中的tree_JavaFX中的塔防(4)
- LDAP命令介绍---dsreplication--initialize
- 47. Python socket编程 2
- 测量怎么显示坐标_测量员必须掌握的——全站仪坐标放样
- 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨 | 揭晓中国开发者真实现状
- MariaDB 10.3 解决掉了UPDATE不支持同一张表的子查询更新
- 如何正确在NSMutableDictionary中加入一个变量int
- 代码整洁读书笔记---序,前言,代码猴子
- Tensorflow模型变量保存
- NetworkManager和network
- web高级程序员必备知识
- v2订阅一键同步自定义混淆
- 集成钉钉机器人消息通知
- 知道Unicode表的数字,怎么用java推出相对应的日文?
- JavaBeans技术的应用
- CGAL Cookbook --CGAL简介
- 计算机协会发言稿范文,科技节的发言稿范文(精选5篇)
- python 动物分类_动物有哪些分类?
热门文章
- 【图频处理】基于matlab GUI界面环图像处理与音乐播放系统【含Matlab源码 185期】
- 【元胞自动机】基于matlab元胞自动机四车道交通流【含Matlab源码 039期】
- pycharm下防止鼠标拖拽代码字符
- c语言程序设计怎么改卷,C语言程序设计(B卷)教程.doc
- linux 历史命令列表,LinuxShell命令history
- php搜索功能代码实列,php记录搜索引擎关键词的代码示例
- python: 在pycharm打开带有中文字符的文件时,乱码,File was loaded in the wrong encoding: ‘UTF-8‘
- 单元格排序_Excel中这8种简单实用的排序方法,很多人都还不会用!
- java面试jquery问题_20个最常见的jQuery面试问题及答案
- ROS main函数中订阅器的编写