[BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)
题目描述
传送门
题解
一眼网络流啊。。。
对于所有的J,s->i,1
对于所有的T,i->t,1
将J和E再拆两个点xi,yi,连边xi->yi,1
对于每一个J能移动到的位置(J或E),连边i->xj,1
对于每一个位置(J或E)能攻击到的T,连边yi->j,1
跑最大流即可
即用流来模拟了攻击的过程
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
#define N 160000
#define inf 2100000000int n,m,s,t,maxflow;bool e[1005][1005];
char str[N];
int tot,point[N],nxt[N],v[N],remain[N];
int deep[N],last[N],cur[N],num[N];
queue <int> q;void addedge(int x,int y,int cap)
{++tot; nxt[tot]=point[x]; point[x]=tot; v[tot]=y; remain[tot]=cap;++tot; nxt[tot]=point[y]; point[y]=tot; v[tot]=x; remain[tot]=0;
}
void bfs(int t)
{for (int i=1;i<=t;++i) deep[i]=t;deep[t]=0;for (int i=1;i<=t;++i) cur[i]=point[i];q.push(t);while (!q.empty()){int now=q.front();q.pop();for (int i=point[now];i!=-1;i=nxt[i])if (deep[v[i]]==t&&remain[i^1]){deep[v[i]]=deep[now]+1;q.push(v[i]);}}
}
int addflow(int s,int t)
{int now=t,ans=inf;while (now!=s){ans=min(ans,remain[last[now]]);now=v[last[now]^1];}now=t;while (now!=s){remain[last[now]]-=ans;remain[last[now]^1]+=ans;now=v[last[now]^1];}return ans;
}
void isap(int s,int t)
{bfs(t);for (int i=1;i<=t;++i) ++num[deep[i]];int now=s;while (deep[s]<t){if (now==t){maxflow+=addflow(s,t);now=s;}bool has_find=0;for (int i=cur[now];i!=-1;i=nxt[i])if (deep[v[i]]+1==deep[now]&&remain[i]){has_find=1;cur[now]=i;last[v[i]]=i;now=v[i];break;}if (!has_find){int minn=t-1;for (int i=point[now];i!=-1;i=nxt[i])if (remain[i]) minn=min(minn,deep[v[i]]);if (!(--num[deep[now]])) break;++num[deep[now]=minn+1];cur[now]=point[now];if (now!=s) now=v[last[now]^1];}}
}
int main()
{scanf("%d%d",&n,&m);scanf("%s",str+1);for (int i=1;i<=m;++i){int x,y;scanf("%d%d",&x,&y);e[x][y]=e[y][x]=1;}s=3*n+1,t=s+1;tot=-1;memset(point,-1,sizeof(point));for (int i=1;i<=n;++i){if (str[i]=='J'){addedge(s,i,1);addedge(i,n+i,1);addedge(n+i,n+n+i,1);for (int j=1;j<=n;++j)if (e[i][j]&&str[j]!='T') addedge(i,n+j,1);}if (str[i]=='T'){addedge(i,t,1);for (int j=1;j<=n;++j)if (e[i][j]&&str[j]!='T') addedge(n+n+j,i,1);}if (str[i]=='E') addedge(n+i,n+n+i,1);}isap(s,t);printf("%d\n",maxflow);
}
[BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)相关推荐
- BZOJ 1779. [Usaco2010 Hol]Cowwar 奶牛战争
传送门 考虑构建网络流模型 把一个流量看成一只奶牛的攻击过程,那么答案就是最大流 因为每只奶牛只能操作一波,所以构造分层图,一层相当于一步 第一层就是初始状态,从 $S$ 向所有 $J$ 奶牛连一条流 ...
- COGS——T 803. [USACO Hol10] 政党 || 1776: [Usaco2010 Hol]cowpol 奶牛政坛
http://www.lydsy.com/JudgeOnline/problem.php?id=1776||http://cogs.pro/cogs/problem/problem.php?pid=8 ...
- [Usaco2010 Hol]cowpol 奶牛政坛
题目描述: 农夫约翰的奶牛住在N (2 <= N <= 200,000)片不同的草地上,标号为1到N.恰好有N-1条单位长度的双向道路,用各种各样的方法连接这些草地.而且从每片草地出发都可 ...
- [Usaco2010 Hol]cowpol 奶牛政坛(入门oj Problem 5274)
第三次发题解哈.有什么表述错误的请见谅(可以提出). 题目源地址:https://www.lydsy.com/JudgeOnline/problem.php?id=1776 文章目录 题目描述 输入 ...
- BZOJ1776: [Usaco2010 Hol]cowpol 奶牛政坛
n<=100000个点的树,每个点属于一个K<=n/2个集合中的一个,每个集合至少两个点,求每个集合中任选两点距离的最大值. 方法一:什么都看不出来,点分,每次只统计经过一个点的每个集合的 ...
- 【BZOJ1778】[Usaco2010 Hol]Dotp 驱逐猪猡 期望DP+高斯消元
[BZOJ1778][Usaco2010 Hol]Dotp 驱逐猪猡 Description 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 300 ...
- BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元
BZOJ_1778_[Usaco2010 Hol]Dotp 驱逐猪猡_概率DP+高斯消元 题意: 奶牛们建立了一个随机化的臭气炸弹来驱逐猪猡.猪猡的文明包含1到N (2 <= N <= 3 ...
- [BZOJ 1778][Usaco2010 Hol]Dotp 驱逐猪猡
1778: [Usaco2010 Hol]Dotp 驱逐猪猡 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 690 Solved: 269 [Sub ...
- [Usaco2010 Mar]gather 奶牛大集会
1827: [Usaco2010 Mar]gather 奶牛大集会 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1129 Solved: 525 [ ...
- BZOJ 1827: [Usaco2010 Mar]gather 奶牛大集会 树形DP
[Usaco2010 Mar]gather 奶牛大集会 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1 ...
最新文章
- Python 列表 insert() 方法
- thinkphp 模型的创建
- 最实用的Office使用技巧
- 禁止backspace键(退格键),但输入文本框时不禁止(兼容IE)
- k8s之kubebuilder简单理解
- 科大星云诗社动态20210222
- 数据挖掘之关联分析一(基本概念)
- SQL Server 2012安装图解
- Java进阶之光!java字符串类型转换为int
- SharePoint 2013 Step by Step——How to Create a Lookup Column to Another Site(Cross Site) 阅读目录...
- 搭建nuxtjs程序 —— 用户信息 or token怎么不丢失
- ACM ICPC 历年真题和资源
- mysql5.7 json特性_mysql5.7新增加的JSON数据类型特征介绍
- 服务器cpu天梯图多核性能,2020年2月cpu处理器天梯图最新高清大图_处理器天梯排行榜...
- 去除小圆点_word中的小圆圈怎么删掉
- 基于java的高速公路收费系统 计算机毕业设计
- 华为m2青春版android7,华为揽阅m2青春版root方案 ple-703l 机油们嗨起来!
- 基于知识图谱的推荐系统(KGRS)综述
- 尚硅谷在线教育视频点播
- Access数据库常用函数大全
热门文章
- Focal-UNet
- 科目三远光灯怎么开图解?科三远光灯是往上还是往下
- 三阶魔方中心互换_魔方中的数学2-置换的定义
- ESP32笔记(7) OpenSSL下载安装
- 数据库索引的分类,类型,索引的优缺点,索引的优化
- xocde8打印出:Presenting view controllers on detached view controllers is discouraged SettingViewContro
- 【UVM基础】3、核心基类和机制
- 使用es6模块化出现Access to script at 'file:///... ..from origin 'null' has been blocked。。。错误
- html css 忽略,HTML与CSS中易被忽略的基础知识点
- 热门智力题 过桥问题和倒水问题