题解

非常显然的费用流。 但是建图还是需要思考的QuQ

将每天分成两个节点 $x_{i,1}, x_{i,2} $, $ x_{i,1}$用于提供服务, $x_{i ,2}$ 用来从源点获得$nd[i] $个毛巾进行消毒(因为$x_{i ,1} $已经流向汇点)。

1、 源点向$x_{i,1} $连容量为$inf$, 费用为$f$ 的边, 表示给买毛巾。

2、 $x_{i, 1}$向汇点连容量为$nd[ i ]$ , 费用为$0 $的边, 表示提供服务

3、$x_{i, 1}$ 向$x_{i + 1, 1}$ 连容量为$inf$, 费用为$0$ 的边, 表示毛巾存到下一天用

4、 源点向$x_{i, 2}$连容量为$nd[ i ]$, 费用为$0 $的边, 表示用过的毛巾拿去清洗

5、$x_{i , 2 }$ 向 $x_{i + a + 1, 1}$连容量为$inf$, 费用为$fa$ 的边, 表示通过方式$a$清洗

6、同理5

然后跑费用流, 就可以把题秒啦

代码

 #include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define rd read()
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
using namespace std; const int N = 1e4;
const int inf = ; int n, dis[N], pre[N], vis[N], a, b, f, fa, fb, nd[N];
int head[N], tot, maxflow, minco;
int S, T = N - ; queue<int>q; struct edge {
int nxt, to, val, c;
}e[N << ]; int read() {
int X = , p = ; char c = getchar();
for(; c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} void added(int fr, int to, int val, int c) {
e[++tot].to = to;
e[tot].val = val;
e[tot].c = c;
e[tot].nxt = head[fr];
head[fr] = tot;
} void add(int fr, int to, int val, int c) {
added(fr, to, val ,c);
added(to, fr, , -c);
} int ch(int x) {
return ((x + ) ^ ) - ;
} int bfs() {
memset(dis, , sizeof(dis));
memset(vis, , sizeof(vis));
memset(pre, , sizeof(pre));
q.push(S);
dis[S] = ;
vis[S] = ;
for(int u, nt; !q.empty(); ) {
u = q.front(); q.pop();
for(int i =head[u]; i; i = e[i].nxt) {
nt = e[i].to;
if(dis[nt] <= dis[u] + e[i].c || !e[i].val) continue;
dis[nt] = dis[u] + e[i].c;
pre[nt] = i;
if(!vis[nt]) vis[nt] = , q.push(nt);
}
vis[u] = ;
}
return dis[T];
} void EK() {
for(; bfs() != inf; ) {
int tmp = inf;
for(int i = pre[T]; i; i = pre[e[ch(i)].to]) tmp = min(tmp, e[i].val);
for(int i = pre[T]; i; i = pre[e[ch(i)].to]) e[i].val -= tmp, e[ch(i)].val += tmp;
maxflow += tmp;
minco += tmp * dis[T];
}
} int main()
{
n = rd; a = rd; b = rd; f = rd; fa = rd; fb = rd;
rep(i, , n) nd[i] = rd;
rep(i, , n) {
add(S, i, inf, f);
add(S, i + n, nd[i], );
add(i, T, nd[i], );
if(i < n) add(i, i + , inf, );
if(i + a < n) add(i + n, i + a + , nd[i], fa);
if(i + b < n) add(i + n, i + b + , nd[i], fb);
}
EK();
printf("%d\n", minco);
}

BZOJ1221 [HNOI2001]软件开发 - 费用流的更多相关文章

  1. bzoj 1221 [HNOI2001] 软件开发 费用流

    [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1938  Solved: 1118[Submit][Status][D ...

  2. 【bzoj1221】[HNOI2001] 软件开发 费用流

    题目描述 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消 ...

  3. BZOJ 1221 [HNOI2001] 软件开发 费用流_建模

    题目描述:   某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供 ...

  4. bzoj1221软件开发 费用流

    题目传送门 思路: 网络流拆点有的是“过程拆点”,有的是“状态拆点”,这道题应该就属于状态拆点. 每个点分需要用的,用完的. 对于需要用的,这些毛巾来自新买的和用过的毛巾进行消毒的,流向终点. 对于用 ...

  5. bzoj1221: [HNOI2001] 软件开发

    挖坑.我的那种建图方式应该也是合理的.然后连样例都过不了.果断意识到应该为神奇建图法... #include<cstdio> #include<cstring> #includ ...

  6. 【BZOJ1221】【HNOI2001】软件开发 [费用流]

    软件开发 Time Limit: 10 Sec  Memory Limit: 162 MB[Submit][Status][Discuss] Description 某软件公司正在规划一项n天的软件开 ...

  7. 【费用流】bzoj1221 [HNOI2001] 软件开发

    几乎为“线性规划与网络流24题”中的餐巾问题. 这里把S看成毛巾的来源,T看成软件公司,我们的目的就是让每天的毛巾满足要求(边满流). 引用题解: [问题分析] 网络优化问题,用最小费用最大流解决. ...

  8. BZOJ1221 [HNOI2001] 软件开发 【费用流】

    题目 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员每天提供一块消毒毛 ...

  9. BZOJ 1221 软件开发(费用流)

    容易看出这是显然的费用流模型. 把每天需要的餐巾数作为限制.需要将天数拆点,x’表示每天需要的餐巾,x’’表示每天用完的餐巾.所以加边 (s,x',INF,0),(x'',t,INF,0). 餐巾可以 ...

随机推荐

  1. HTML|CSS之前端入门

    知识内容: 1.计算机网络综述 2.web基础 3.HTML与CSS介绍 4.JavaScript与jQuery介绍 一.计算机网络综述 1.什么是计算机网络 计算机网络是指将地理位置不同.具有独立功 ...

  2. python入门第0篇 Windows下python的安装及pip安装和使用

    知识内容: 1. python2和python3安装 2. pip安装及pip命令使用 注:安装python3就可以了,python2除非项目开发需要否则不用安装,目前学习python就使用pytho ...

  3. mac 安装 nginx

    我是用root用户装的 1.先安装PCRE库 可以在这里下载最新版,我这里使用的是8.33的版本然后在终端执行下面的命令. cd ~/Download tar xvzf pcre-8.33.tar.g ...

  4. uva-539-枚举

    题意: 给你一个无向图,找最长路. 俩份代码,感觉map[][]简单易懂啊 #include<stdio.h> #include<iostream> #include<s ...

  5. 代码:css小图标

    向下小箭头 .icon-tip{ border-color: transparent transparent #bb0808 transparent; border-style:solid; bord ...

  6. DBCP连接池配置常用参数说明

    参数 默认值 说明 username \ 传递给JDBC驱动的用于建立连接的用户名 password \ 传递给JDBC驱动的用于建立连接的密码 url \ 传递给JDBC驱动的用于建立连接的URL ...

  7. restful 注解 总结 (比较完整的):http://www.xuetimes.com/archives/388 , https://www.cnblogs.com/chen-lhx/p/5599806.html

    参考1:  http://www.xuetimes.com/archives/388 参考2:   https://www.cnblogs.com/chen-lhx/p/5599806.html 参考 ...

  8. Vue2.0中v-for迭代语法变化(key、index)

    语法发生了变化:http://blog.csdn.net/sinat_35512245/article/details/53966788 新数组语法 value in arr (value, inde ...

  9. 你该知道的 TValue

    你该知道的 TValue Represents a lightweight version of the Variant type. TValue is a data structure that c ...

  10. SQL Server 2005 无法连接到WMI提供程序 无法执行 SQL Server 系统配置检查器

    无法连接到WMI提供程序.你没有权限或者该服务器无法访问/cannot connect to WMI provider. You do not have permission or the--由于计算 ...