BZOJ1280: Emmy卖猪pigs

https://lydsy.com/JudgeOnline/problem.php?id=1280

分析:

  • 这题感觉还好,因为是有时间顺序,所以拆点做最大流即可。
  • 具体地我们让当前层每一个猪圈连向下一层,钥匙的猪圈用inf无向边连上。
  • 看题解之后发现自己菜了,直接从人到人连边就完事了。
  • 不过我过了就没改

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
using namespace std;
#define inf 0x3f3f3f3f
#define N 200050
#define M 2000050
typedef double f2;
namespace Dinic {
int head[N],to[M],nxt[M],flow[M],dep[N],Q[N],cnt=1;
const int S=N-1,T=N-2;
inline void add(int u,int v,int f) {
to[++cnt]=v; nxt[cnt]=head[u]; head[u]=cnt; flow[cnt]=f;
to[++cnt]=u; nxt[cnt]=head[v]; head[v]=cnt; flow[cnt]=0;
}
bool bfs() {
memset(dep,0,sizeof(dep));
int l=0,r=0; dep[S]=1;
Q[r++]=S;
while(l<r) {
int x=Q[l++],i;
for(i=head[x];i;i=nxt[i]) if(!dep[to[i]]&&flow[i]) {
dep[to[i]]=dep[x]+1; if(to[i]==T) return 1; Q[r++]=to[i];
}
}return 0;
}
int dfs(int x,int mf) {
if(x==T) return mf;
int i,nf=0;
for(i=head[x];i;i=nxt[i]) if(dep[to[i]]==dep[x]+1&&flow[i]) {
int tmp=dfs(to[i],min(mf-nf,flow[i]));
if(!tmp) dep[to[i]]=0;
nf+=tmp; flow[i]-=tmp; flow[i^1]+=tmp;
if(nf==mf) break;
}
return nf;
}
int dinic() {
int f=0,mxf=0;
while(bfs()) {
while((f=dfs(S,inf))) mxf+=f;
}return mxf;
}
}
int n,m,idx[1050][1050],tt[1050];
int main() {
using namespace Dinic;
scanf("%d%d",&m,&n);
int i,j,x,y;
for(i=1;i<=n;i++) for(j=1;j<=m;j++) idx[i][j]=++idx[0][0];
for(i=1;i<=m;i++) {
scanf("%d",&x); add(S,idx[1][i],x);
}
for(i=1;i<=n;i++) {
scanf("%d",&x);
for(j=1;j<=x;j++) scanf("%d",&tt[j]);
sort(tt+1,tt+x+1);
for(j=1;j<=x;j++) {
add(idx[i][tt[j]],n*m+i,inf);
}
if(i<m) {
for(j=1;j<=m;j++) add(idx[i][j],idx[i+1][j],inf);
for(j=1;j<x;j++) add(idx[i+1][tt[j]],idx[i+1][tt[j+1]],inf),add(idx[i+1][tt[j+1]],idx[i+1][tt[j]],inf);
}
scanf("%d",&y);
add(n*m+i,T,y);
}
printf("%d\n",dinic());
}

BZOJ1280: Emmy卖猪pigs的更多相关文章

  1. BZOJ1280 Emmy卖猪pigs 网络流

    正解:网络流 解题报告: 传送门! 我网络流的基础题都还麻油做完就来做这个了,,,wsl,,, 首先想下最基础的构图方法 不难想到把猪圈和顾客分别当做节点,然后新建一个源点和汇点 然后考虑怎么连边,首 ...

  2. 【BZOJ1280】Emmy卖猪pigs 最大流

    [BZOJ1280]Emmy卖猪pigs Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪 ...

  3. [BZOJ1280][POJ1149]Emmy卖猪pigs

    [BZOJ1280][POJ1149]Emmy卖猪pigs 试题描述 Emmy在一个养猪场工作.这个养猪场有 \(M\) 个锁着的猪圈,但Emmy并没有钥匙.顾客会到养猪场来买猪,一个接着一个.每一位 ...

  4. Bzoj 1280: Emmy卖猪pigs

    1280: Emmy卖猪pigs Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 279  Solved: 182[Submit][Status][Dis ...

  5. Pku1149 PIGS 卖猪

    题目链接:ヾ(≧∇≦*)ゝ Description Emmy在一个养猪场工作.这个养猪场有M个锁着的猪圈,但Emmy并没有钥匙. 顾客会到养猪场来买猪,一个接着一个.每一位顾客都会有一些猪圈的钥匙,他 ...

  6. [bzoj1280]卖猪

    首先考虑猪无法流动,那么源点向每一个猪圈连猪圈中猪个数的边,每一个顾客向汇点连所需猪的边,每一个猪圈向能打开它的顾客连inf的边,跑最大流即可. 但考虑猪要流动,有一个十分巧妙地做法,将每一个顾客所有 ...

  7. POJ1149 PIGS [最大流 建图]

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20662   Accepted: 9435 Description ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. poj 1149 PIGS【最大流经典建图】

    PIGS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 18727   Accepted: 8508 Description ...

随机推荐

  1. Python学习进程(3)Python基本数据类型

        本节介绍在Python语法中不同的变量数据类型.     (1)基本数据类型: >>> a=10; >>> b=10.0; >>> c=T ...

  2. 吐槽 坑爹的MySQL安装路径选择

    一般再windows下面安装MySQL我们都会选择msi安装模式,然而安装最新版的MySQL(mysql-installer-community-5.7.11.0.msi 下载地址)发现MySQL默认 ...

  3. MyBatis SQL 生成方法 增删改查

    此类根据JAVA实体BEAN生成MYBATIS的接口SQL(mapper) package com.sicdt.sicsign.bill.service.hessian; import java.la ...

  4. MyBatis 插入数据库返回主键

    最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...

  5. [转]AOP那些学术概念—通知、增强处理连接点(JoinPoint)切面(Aspect)

    AOP那些学术概念—通知.增强处理连接点(JoinPoint)切面(Aspect) 1.我所知道的AOP 初看起来,上来就是一大堆的术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充 ...

  6. linux音频 DAPM之二:audio paths与dapm kcontrol

    转:https://blog.csdn.net/wh_19910525/article/details/12749293 在用alsa_amixer controls时,除了我们之前提到的snd_so ...

  7. Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程

    1.简介 Laravel Debugbar 在 Laravel 5 中集成了 PHP Debug Bar ,用于显示调试及错误信息以方便开发.该扩展包包含了一个 ServiceProvider 用于注 ...

  8. Es6 export default 的用法

    export 之后加上default意指默认接口的意思,在一个文件里面默认的只能有一个 其区别就是{} 在export中 引入需要用{}来盛放 //这是设置入口var a='my name is xi ...

  9. SpringBoot Mybatis keyProperty和useGeneratedKeys的作用

    在使用mybatis时,常常会出现这种需求: 当主键是自增的情况下,添加一条记录的同时,其主键是不能被使用的(为空),但是有时我们需要该主键,这时我们该如何处理呢?这时我们只需要在其对应xml中加入以 ...

  10. Linux 修改DNS解决 Could not retrieve mirrorlist" 报错

    CentOS yum有时出现“Could not retrieve mirrorlist ”的解决办法——resolv.conf的配置 或者IP配置文件上写入 缺少DNS引起的问题1. 无法识别域名 ...