bzoj 1061 志愿者招募 有上下界费用流做法

时间:2023-02-26 16:05:45

把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf)。

对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf。这样每多1的流量,就多了一个从S[i]到T[i]+1的循环流。

求一遍无源汇的最小费用可行流就可以了。

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#define inf 0x3f3f3f3f
#define N 100005
using namespace std;
int n,m;
int v[N];
int head[N],ver[N],nxt[N],tot,f[N],quan[N];
void add(int a,int b,int c,int d)
{
tot++;nxt[tot]=head[a];head[a]=tot;ver[tot]=b;quan[tot]=d;f[tot]=c;
tot++;nxt[tot]=head[b];head[b]=tot;ver[tot]=a;quan[tot]=-d;f[tot]=;
return ;
}
int S,T;
int dis[],in[],with[],mn[];
bool tell()
{
memset(dis,0x3f,sizeof(dis));
memset(in,,sizeof(in));
dis[S]=;mn[S]=inf;
queue<int>q;
q.push(S);
while(!q.empty())
{
int tmp=q.front();q.pop();in[tmp]=;
for(int i=head[tmp];i;i=nxt[i])
{
if(dis[ver[i]]>dis[tmp]+quan[i]&&f[i])
{
dis[ver[i]]=dis[tmp]+quan[i];
with[ver[i]]=i;mn[ver[i]]=min(f[i],mn[tmp]);
if(!in[ver[i]])in[ver[i]]=,q.push(ver[i]);
}
}
}
return dis[T]!=inf;
}
int zeng()
{
for(int i=T;i;i=ver[with[i]^])
{
f[with[i]]-=mn[T];f[with[i]^]+=mn[T];
}
return mn[T]*dis[T];
}
int main()
{
scanf("%d%d",&n,&m);
S=;T=n+;
tot=;
int tmp;
for(int i=;i<=n;i++)
{
scanf("%d",&tmp);
add(i,T,tmp,);
add(S,i+,tmp,);
add(i,i+,inf,);
}
int t1,t2,t3;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&t1,&t2,&t3);
add(t2+,t1,inf,t3);
}
int ans=;
while(tell())ans+=zeng();
printf("%d\n",ans);
return ;
}

bzoj 1061 志愿者招募 有上下界费用流做法的更多相关文章

  1. BZOJ 3876&colon; &lbrack;Ahoi2014&rsqb;支线剧情 &lbrack;上下界费用流&rsqb;

    3876: [Ahoi2014]支线剧情 题意:每次只能从1开始,每条边至少经过一次,有边权,求最小花费 裸上下界费用流...每条边下界为1就行了 注意要加上下界*边权 #include <io ...

  2. BZOJ 1927&colon; &lbrack;Sdoi2010&rsqb;星际竞速 &lbrack;上下界费用流&rsqb;

    1927: [Sdoi2010]星际竞速 题意:一个带权DAG,每个点恰好经过一次,每个点有曲速移动到他的代价,求最小花费 不动脑子直接上上下界费用流过了... s到点连边边权为曲速的代价,一个曲速移 ...

  3. 【有源汇上下界费用流】BZOJ 3876 &lbrack;Ahoi2014&rsqb;支线剧情

    题目链接: http://www.lydsy.com:808/JudgeOnline/problem.php?id=3876 题目大意: 给定一张拓扑图(有向无环图),每条边有边权,每次只能从第一个点 ...

  4. BZOJ&period;1927&period;&lbrack;SDOI2010&rsqb;星际竞速&lpar;无源汇上下界费用流SPFA &sol;最小路径覆盖&rpar;

    题目链接 上下界费用流: /* 每个点i恰好(最少+最多)经过一次->拆点(最多)+限制流量下界(i,i',[1,1],0)(最少) 然后无源汇可行流 不需要源汇. 注: SS只会连i',求SS ...

  5. BZOJ2324 ZJOI2011营救皮卡丘(floyd&plus;上下界费用流)

    虽然不一定每次都是由编号小的点向编号大的走,但一个人摧毁的顺序一定是从编号小的到编号大的.那么在摧毁据点x的过程中,其只能经过编号小于x的点.并且这样一定合法,因为可以控制其他人先去摧毁所经过的点.那 ...

  6. 【BZOJ2055】80人环游世界 有上下界费用流

    [BZOJ2055]80人环游世界 Description     想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么     一个 ...

  7. 【BZOJ3876】&lbrack;Ahoi2014&rsqb;支线剧情 有上下界费用流

    [BZOJ3876][Ahoi2014]支线剧情 Description [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩 ...

  8. 【bzoj2324】&lbrack;ZJOI2011&rsqb;营救皮卡丘 最短路-Floyd&plus;有上下界费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832504.html 题目描述 皮卡丘被火箭队用邪恶的计谋抢走了!这三个坏家伙还给小智留下了赤果果的挑衅!为了皮卡丘 ...

  9. 【bzoj1927】&lbrack;Sdoi2010&rsqb;星际竞速 有上下界费用流

    原文地址:http://www.cnblogs.com/GXZlegend/p/6832464.html 题目描述 10年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一,夺得这个项目的冠军 ...

随机推荐

  1. 呛口大话APP 移动端到底怎么玩

    [上海站]活动概况 时间:2016年04月09日13:30-16:30 地点:上海市黄浦区黄陂北路227号中区广场105室WE+联合办公空间 主办:APICloud.七牛.听云 报名网址:http:/ ...

  2. SQL with PL&sol;SQL

    DDL commands --> create user / table / view / sequence alter DML --> data manipulation languag ...

  3. 安卓开发错误&colon;The type android&period;support&period;v4&period;app&period;TaskStackBuilder&dollar;SupportParentable cannot be resolved&period;

    今天在使用低版本下的ActionBar,在继承ActionBarActivity时报了"The type Android.support.v4.app.TaskStackBuilder$Su ...

  4. easy ui tree 取复选框打勾的值

    var nodes = $('#basetree').tree('getChecked'); var cnode = ''; for ( var i = 0; i < nodes.length; ...

  5. C---通过指针访问数组

    C语言规定:如果指针变量P已指向数组中的一个元素,则P+1指向同一数组中的下一个元素. 引入指针变量后,就可以用俩种方法来访问数组元素了. 如果p的初值为&a[0],则: P+i 和a+i 就 ...

  6. Ubuntu几个常用命令

    命令 > file 重定向,清空file文件 命令 >>file 重定向,不清空文件,在尾部追加 英文对照:

  7. Elasticsearch全文检索实战小结

    一.项目概述 这是一个被我称之为“没有枪.没有炮,硬着头皮自己造”的项目.项目是和其它公司合作的三个核心模块开发. 使用ES的目的是: 1).采集数据.网站数据清洗后存入ES: 2).对外提供精确检索 ...

  8. NC 的简单使用

    netcat被誉为网络安全界的’瑞士军刀’,相信没有什么人不认识它吧……一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据.它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松 ...

  9. &lbrack;HNOI2008&rsqb;玩具装箱

    OJ题号: BZOJ1010 思路: 斜率优化动态规划. 由题意得状态转移方程为$f_i=\displaystyle{\min_{j=0}^{i-1}}\{f_j+\left(i-j-1+\displ ...

  10. codeforces 407D Largest Submatrix 3

    codeforces 407D Largest Submatrix 3 题意 找出最大子矩阵,须满足矩阵内的元素互不相等. 题解 官方做法 http://codeforces.com/blog/ent ...