题解:

神建图

普通的二分图费用流建完后

添加学生x->t 容量为k-1的边

表示尽量让x参加一个活动,剩下的k-1次机会可以不参加

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int maxn=;
const int oo=; int n,m,k;
int a[maxn],b[maxn];
int ans=; struct Edge{
int from,to,cap,flow,cost;
};
vector<int>G[maxn];
vector<Edge>edges;
void Addedge(int x,int y,int z,int w){
Edge e;
e.from=x;e.to=y;e.cap=z;e.flow=;e.cost=w;
edges.push_back(e);
e.from=y;e.to=x;e.cap=;e.flow=;e.cost=-w;
edges.push_back(e);
int c=edges.size();
G[x].push_back(c-);
G[y].push_back(c-);
} int s,t,totn;
queue<int>q;
int inq[maxn];
int d[maxn];
int p[maxn]; int Spfa(int &nowflow,int &nowcost){
for(int i=;i<=totn;++i){
d[i]=oo;inq[i]=p[i]=;
}
d[s]=;q.push(s);
while(!q.empty()){
int x=q.front();q.pop();inq[x]=;
for(int i=;i<G[x].size();++i){
Edge e=edges[G[x][i]];
if((e.cap>e.flow)&&(d[x]+e.cost<d[e.to])){
d[e.to]=d[x]+e.cost;
p[e.to]=G[x][i];
if(!inq[e.to]){
q.push(e.to);
inq[e.to]=;
}
}
}
} if(d[t]==oo)return ;
int x=t,f=oo;
while(x!=s){
Edge e=edges[p[x]];
f=min(f,e.cap-e.flow);
x=e.from;
}
nowflow+=f;nowcost+=f*d[t];
x=t;
while(x!=s){
edges[p[x]].flow+=f;
edges[p[x]^].flow-=f;
x=edges[p[x]].from;
}
return ;
} int Mincost(){
int flow=,cost=;
while(Spfa(flow,cost)){
}
return cost;
} char ss[];
int main(){
scanf("%d%d%d",&n,&m,&k);
totn=n+m;s=++totn;t=++totn;
for(int i=;i<=m;++i)scanf("%d",&a[i]);
for(int i=;i<=m;++i)scanf("%d",&b[i]);
for(int i=;i<=m;++i){
for(int j=;j<=n;++j){
Addedge(i+n,t,,(*j-)*a[i]-b[i]);
}
}
for(int i=;i<=n;++i){
scanf("%s",ss+);
for(int j=;j<=m;++j){
if(ss[j]=='')Addedge(i,j+n,,);
}
}
for(int i=;i<=n;++i)Addedge(s,i,k,);
for(int i=;i<=n;++i)Addedge(i,t,k-,);
cout<<Mincost()<<endl;
return ;
}

BZOJ 3442 学习小组的更多相关文章

  1. 【BZOJ 3442】 3442: 学习小组 (最大费用流)

    3442: 学习小组 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 403  Solved: 193 Description [背景] 坑校准备鼓励学生 ...

  2. 【BZOJ】【3442】学习小组

    网络流/费用流 orz zyf 裸的费用流,根据题目描述即可建出如下的图: S->i 费用表示每有一个加入第 i 个小组的学生,需要花的钱,由于是跟流量(人数)的二次方相关,所以要拆边……然后每 ...

  3. bzoj3442: 学习小组(费用流好题)

    3442: 学习小组 题目:传送门 题解: 超级好题啊大佬们的神题!建图肥肠灵性!感觉自己是星际玩家... 首先呢st直接向每个人连边,容量为min(k,喜欢的小组个数),费用为0 然后每个人再向ed ...

  4. BZOJ3442: 学习小组

    Description [背景] 坑校准备鼓励学生参加学习小组. [描述]     共有n个学生,m个学习小组,每个学生有一定的喜好,只愿意参加其中的一些学习小组,但是校领导为学生考虑,规定一个学生最 ...

  5. 【刷题】洛谷 P4209 学习小组

    题目描述 共有n个学生,m个学习小组,每个学生只愿意参加其中的一些学习小组,且一个学生最多参加k个学习小组.每个学生参加学习小组财务处都收一定的手续费,不同的学习小组有不同的手续费.若有a个学生参加第 ...

  6. 怎样增加Dave 英语学习小组

    一.     增加小组 英语对IT 是非常重要的,但非常多人都不能坚持去学习,Dave 英语学习小组成立与已经超过半年,如今进行扩招.欢迎想提高英语,而且能够坚持每天学习的人,增加Dave 的小组.并 ...

  7. 【BZOJ3442】学习小组 费用流

    [BZOJ3442]学习小组 Description [背景] 坑校准备鼓励学生参加学习小组. [描述] 共有n个学生,m个学习小组,每个学生有一定的喜好,只愿意参加其中的一些学习小组,但是校领导为学 ...

  8. bzoj3442学习小组

    bzoj3442学习小组 题意: 共有n个学生,m个学习小组,每个学生只愿意参加其中的一些学习小组,且一个学生最多参加k个学习小组.每个学生参加学习小组财务处都收一定的手续费,不同的学习小组有不同的手 ...

  9. Python学习小组微信群公告页面

    <简明 Python 教程>读经群,PDF地址:https://pan.baidu.com/s/1FK8s4cTfwWxSktOfS95ArQ,PyCharm-Edu地址:https:// ...

随机推荐

  1. POJ 2391 Ombrophobic Bovines 网络流 建模

    [题目大意]给定一个无向图,点i处有Ai头牛,点i处的牛棚能容纳Bi头牛,求一个最短时间T使得在T时间内所有的牛都能进到某一牛棚里去.(1 <= N <= 200, 1 <= M & ...

  2. JAVA虚拟机:Java技术体系讲解(一)

    按照Java系统的功能划分为: 一.Java语言,即使用Java编程语言进行软件开发. 二.开发过程中使用的工具和API(API(Application Programming Interface,应 ...

  3. git 的一些基本命令

    基本命令 1.返回上一级目录:cd ../ 2.进入某一目录:cd git (进入 git 目录) 3. 显示当前路径:pwd 4.显示当前文件目录的文件 : dir 5.新建文件夹:mkdir +文 ...

  4. LoadRunner回放脚本时,显示浏览器的设置

    打开LoadRunner的VuGen,选择Tools-->General Options-->Display,在Display里将 Show browser during replay打钩 ...

  5. APM概述

    当前 APM(Application Performance Management (Monitoring)/ 应用性能管理)或者叫 Distributed Tracing System 工具有: G ...

  6. Swift 语法糖then

    then是一个swift初始化库,只有80几行的代码库,确可以让初始化变得很优雅. 1.使用then初始化AnyObject,这里以初始化控件为例 lazy var label = UILabel() ...

  7. python format使用方法

    #使用format 方法进行格式化 print("The number {1:} in hex is: {1:#x}, the number {0:} in oct is {0:o}&quo ...

  8. cmd命令打开本地*.db数据文件的一些坑

    昨天刚看了下sqlite数据库,用的是cmd窗口 写的,建了几个表,今天在次打开,发现.问题有点小多啊.. 我也不知道我的数据库名字后面为啥会带  (“ : ”) 下面是我的数据文件: 刚开始看了下, ...

  9. 微信access_token设计的原理解析

    1.access_token是加密的字符串,其目的是为了接口安全考虑,不然随便就能调用微信服务器的接口会有很大风险. 2.用户在公众号中填写的Token就相当于本项目中的xiaoming,是签名验证中 ...

  10. Mac安装软件提示破损

    安装提示破损 zhong终端输入 sudo spctl --master-disable 就可以顺利打开啦