【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

```cpp
/*
设一个超级源点S和超级汇点T
S和2*i-1各连一条容量为ni的边。
花费为0
表示每天都会产生ni条要洗的毛巾

S和2*i各连一条容量为INF的边
花费为f
表示新买毛巾用 2*i-1和2*(i+a)连容量为INF的边
花费为fa 2*i-1和2*(i+b)连容量为INF的边
花费为fb 表示用完的毛巾消毒。
当然。用完的毛巾还能不马上消毒。
所以
2*i-1和2*(i+1)-1连容量为INF的边。花费为0 然后对于2*i,每个点都和汇点T连容量为ni的边。
表示每天要用的毛巾个数。 这样满流的时候就是符合要求的了。
跑个费用流就可以了。

*/

**边数一定要谨慎算。。**
</font> <font color = black size = 6> 【代码】</font>
```cpp
#include <bits/stdc++.h>
#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 all(x) x.begin(),x.end()
#define pb push_back
#define ms(x,y) memset(x,y,sizeof x)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std; const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int N = 2e3;
const int M = 2e4;
const int INF = 0x3f3f3f3f; struct abc{
int from,en,flow,nex,cost;
}; int n,A,B,F,FA,FB,fir[N+100],dis[N+100],pre[N+100],mi[N+100],totm,a[N+100],ans;
bool inq[N+10];
queue<int> dl;
abc bian[M]; 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 (pre[t]==-1) 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 += mi[t]*bian[temp].cost;
}
return true;
} int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
ms(fir,255);
cin >> n >> A >> B >> F >> FA >> FB;
for (int i = 1;i <= n;i++) cin >> a[i];
for (int i = 1;i <= n;i++) {
add(0,2*i-1,a[i],0);
add(0,2*i,INF,F);
if (i<n) add(2*i-1,2*(i+1)-1,INF,0);
add(2*i,2*n+1,a[i],0);
if (i+A+1<=n) add(2*i-1,2*(i+A+1),INF,FA);
if (i+B+1<=n) add(2*i-1,2*(i+B+1),INF,FB);
} while (spfa(0,2*n+1));
cout<<ans<<endl;
return 0;
}

【BZOJ 1221】 [HNOI2001] 软件开发的更多相关文章

  1. BZOJ 1221: [HNOI2001] 软件开发

    1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1428  Solved: 791[Submit][Stat ...

  2. BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发

    3280: 小R的烦恼 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 399  Solved: 200[Submit][Status][Discuss ...

  3. BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)

    不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...

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

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

  5. [BZOJ 1221] [HNOI2001] 软件开发 【费用流 || 三分】

    题目链接:BZOJ - 1221 题目分析 算法一:最小费用最大流 首先这是一道经典的网络流问题.每天建立两个节点,一个 i 表示使用毛巾,一个 i' 表示这天用过的毛巾. 然后 i 向 T 连 Ai ...

  6. BZOJ 1221: [HNOI2001] 软件开发【最小费用最大流】

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

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

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

  8. BZOJ 1221 [HNOI2001] 软件开发(费用流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1221 [题目大意] 每天对毛巾都有一定的需求ni,每天可以花f价值每条购买毛巾, 当天 ...

  9. bzoj 1221: [HNOI2001] 软件开发 (网络流)

    注意说如果直接从每天的新的连向旧的,那整个图的最大流还是不变,答案就一直会是Σni*f type arr=record toward,next,cap,cost:longint; end; const ...

  10. 【BZOJ 1221】 1221: [HNOI2001] 软件开发 (最小费用流)

    1221: [HNOI2001] 软件开发 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1581  Solved: 891 Description ...

随机推荐

  1. BigInteger类(高精度整型)

    位置:java.math.BigInteger 作用:提供高精度整型数据类型及相关操作 一.基本介绍 BigInteger为不可变的任意精度的整数(对象创建后无法改变,每次运算均会产生一个新的对象). ...

  2. Codeforces Gym 100015F Fighting for Triangles 状态压缩DP

    F Fighting for Triangles Description Andy and Ralph are playing a two-player game on a triangular bo ...

  3. Oracle 11g 学习3——表空间操作

    一.表空间概述 表空间是Oracle中最大的逻辑存储结构,与操作系统中的数据文件相相应: 基本表空间:一般指用户使用的永久性表空间,用于存储用户的永久性数据          暂时表空间: 主要用于存 ...

  4. DB-MySql:MySQL 及 SQL 注入

    ylbtech-DB-MySQL:MySQL 及 SQL 注入 1.返回顶部 1. MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL ...

  5. Flask Cookie和Session

    1.1.概念 cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了解决这个问题,第 ...

  6. dell台式机设置U盘启动步骤

    在开机启动看见DELL的标志后,连续按F12键进入BIOS界面,然后按照界面进行操作,操做完成后保存退出,然后再按F12键选择U盘启动. 注意硬盘模式需要选择为disabled.

  7. $(function(){});里的方法无效问题

    $(function(){})已经是一个匿名函数了,在里面定义的函数已经是私有了,不能全局访问.把函数定义在全局,也就是function外面,这样外部才能调用.

  8. input上传文件检测文件大小

    前几天在做 input[type='file'] 上传图片时,需要检测上传文件的内存大小,写了一个小demo,在此做一总结: <!DOCTYPE html> <html lang=& ...

  9. vue-cli搭建项目结构及引用bootstrap

    vue-cli脚手架工具快速构建项目架构: 1.首先默认了有已经安装了node,然后依次执行以下命令: npm install -g vue-cli                   全局安装vue ...

  10. px 与 pt

    px:pixel,像素,屏幕上显示的最小单位,用于网页设计,直观方便: pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用: em:即%,在CSS中,1em=100 ...