题目链接

见上题。
每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解。
于是就可以用费用流水过去顺便拿个rank2 233.

//20704kb   300ms
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=1007,M=1000005,INF=0x3f3f3f3f;int src,des,n,m,S[N],T[N],Enum,H[N],nxt[M],fr[M],to[M],cap[M],cost[M],pre[N],dis[N];
char IN[MAXIN],*SS=IN,*TT=IN;inline int read()
{int now=0;register char c=gc();for(;!isdigit(c);c=gc());for(;isdigit(c);now=now*10+c-'0',c=gc());return now;
}
inline void AddEdge(int u,int v,int w,int c)
{fr[++Enum]=u, to[Enum]=v, nxt[Enum]=H[u], H[u]=Enum, cap[Enum]=w, cost[Enum]=c;fr[++Enum]=v, to[Enum]=u, nxt[Enum]=H[v], H[v]=Enum, cap[Enum]=0, cost[Enum]=-c;
}
bool SPFA()
{static std::queue<int> q;static bool inq[N];memset(dis,0x3f,sizeof dis);dis[src]=0, q.push(src);while(!q.empty()){int x=q.front(); q.pop();inq[x]=0;for(int v,i=H[x]; i; i=nxt[i])if(cap[i] && dis[v=to[i]]>dis[x]+cost[i]){dis[v]=dis[x]+cost[i], pre[v]=i;if(!inq[v]) inq[v]=1, q.push(v);}}return dis[des]<INF;
}
int MCMF()
{int res=0, mn=INF;for(int i=des; i!=src; i=fr[pre[i]])mn=std::min(mn,cap[pre[i]]);for(int i=des,v=pre[i]; i!=src; i=fr[v],v=pre[i])res+=mn*cost[v], cap[v]-=mn, cap[v^1]+=mn;return res;
}int main()
{n=read(), m=read(), Enum=1, src=1, des=n+2;for(int i=1; i<=n; ++i) AddEdge(i,i+1,INF-read(),0);for(int i=1,k,c; i<=m; ++i){k=read();for(int j=1; j<=k; ++j) S[j]=read(),T[j]=read();c=read();for(int j=1; j<=k; ++j) AddEdge(S[j],T[j]+1,INF,c);}AddEdge(n+1,des,INF,0);int res=0;while(SPFA()) res+=MCMF();printf("%d\n",res);return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/9364197.html

BZOJ.3265.志愿者招募加强版(费用流SPFA)相关推荐

  1. BZOJ 3265 志愿者招募加强版 单纯形

    题目大意:同1061 不过每类志愿者能工作的区间是多段 这是卡网络流?不明 总之把1061稍微改改就能过了- - #include <cmath> #include <cstdio& ...

  2. [线性规划 对偶原理 单纯形] BZOJ 3265 志愿者招募加强版

    就是个裸题了 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring& ...

  3. [NOI2008] 志愿者招募 (费用流)

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

  4. P3980-[NOI2008]志愿者招募【费用流】

    正题 题目链接:https://www.luogu.com.cn/problem/P3980 题目大意 nnn天,第iii天需要AiA_iAi​个志愿者.有mmm种志愿者,第iii种从sis_isi​ ...

  5. [BZOJ1061] [NOI2008] 志愿者招募 - 最小费用最大流

    大部分内容转自: BYVOID - NOI2008 志愿者招募  如果讲道理的话,就是说我们抽象一下这个模型--然后每条费用边就是连接起始日期和结束日期的边,也就是说这条边上的流量增加1,就要增加一个 ...

  6. 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法

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

  7. bzoj 1061 志愿者招募

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec   Memory Limit: 162 MB Submit: 3038   Solved: 1882 [ Submit] ...

  8. BZOJ 4946: [Noi2017]蔬菜 模拟费用流

    title BZOJ 4946 LUOGU 3826 简化题意: 定义了一种蔬菜为:\(ai,si,ci,xi\),意思是蔬菜的价格为 \(a_i\),第一份卖出时价格为 \(a_i+s_i\),一共 ...

  9. 洛谷 - P2045 - 方格取数加强版 - 费用流

    原来这种题的解法是费用流. 从一个方格的左上走到右下,最多走k次,每个数最多拿走一次. 每次走动的流量设为1,起始点拆点成限制流量k. 每个点拆成两条路,一条路限制流量1,费用为价值相反数.另一条路无 ...

最新文章

  1. 如何在阿里云上安全的存放您的配置 - 续
  2. 【bzoj 2460 [BeiJing2011]元素】
  3. Java技术分享:集群环境下的定时任务
  4. appium--每次启动会重新安装的问题(没试过)
  5. 如何制作一个简单的游戏 Cocos2d x 2 0 4
  6. jquery遍历元素对象each方法
  7. 最长公共子序列问题解析
  8. MAC m1芯片 Ubuntn配置过程
  9. GD32F303调试小记(零)之工程创建与编译
  10. srt,ass,ssa三种字幕的区别
  11. VC打印机使用 win95环境的下例子测试
  12. 何谓dB、dBm、dBi
  13. 360浏览器兼容IE模式下打印去掉页眉页脚
  14. uboot引导kernel - 4 -gd bd详解
  15. 天冷服务器自动关机,天冷iphone自动关机怎么办 天冷iphone自动关机解决办法【详解】...
  16. 3an推客CPC怎么设置?3an推客推广效果怎么样
  17. 感知人工智能操作系统
  18. Mac电脑的自动切换输入法
  19. 玩客云刷甜糖(2022-7-26亲测)
  20. 基于STM32F103RCT6实现串口中断发送,使用环形队列

热门文章

  1. 全国计算机等级考试题库二级C操作题100套(第86套)
  2. -9 逆序输出一个整数的各位数字_【每日算法】基础算法——归并排序[求逆序对的数量](四)(思想很经典)...
  3. oracle 不等于某类,Oracle如何查询不等于某数值
  4. html php获取post数据格式,html - php文件无法得到POST过来的数据
  5. com 对象与其基础 rcw 分开后就不能再使用_如何使用 Kubeflow 机器学习流水线
  6. T.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflectio
  7. java面试题-----------静态代码块和代码块和构造方法执行顺序
  8. idea自动生成not null判断语句
  9. 16个烧光你脑细胞的悖论
  10. 服务器系统玩dnf,win7系统玩dnf提示正在连接服务器的解决方法