牛客练习赛89--牛牛防疫情

牛牛防疫情

题意:

牛牛用卖烤串赚的钱买了一款游戏,这款游戏的地图是一个 n*n 的网格,其中有 m 个地区存在感染源(红色),其余地区为安全区(白色)。已知一个感染源可同时将与其相邻(上下左右)的安全区感染,被感染的安全区称之为新发地(黄色)。一个安全区变为一个新发地需要付出大小为 c 的代价。新发地可在下一时刻作为感染源将与其相邻的安全区感染为新的新发地。
为了遏制疫情扩散,牛牛决定采取下列两种措施

  1. 在感染源(新发地)周围修建墙,墙可阻止疫情的扩散。但每堵墙需要付出大小为 1 的代价。
  2. 任意让疫情扩散。

牛牛现在想知道采取哪种措施可以使得付出的代价最小。

题解:

对于每个格子要么被感染,要么被墙隔离,
我们可以想最小割,认为与s相连的是被感染的,与t相连的是被隔离的
如何建边?
源点连向每一个感染源,流量为正无穷;
非感染源向T连流量为c
相邻格子之间连流量为1
这样如果一个格子最后不被感染,那么与相邻的被感染的格子之间的边就需要割掉(不再与s相连);如果被感染,就要与T之间的边割掉(不再属于隔离)
题目问最小代价,就是最小割
为了方便实验,我们代码中是将所有点连接T,最后答案再减去初始m个感染源的代价

代码:

#include <bits/stdc++.h>
using namespace std;
const long long inf=2005020600;
int n,m,s,t,u,v;
long long w,ans,dis[520010];
int tot=1,now[520010],head[520010]; struct node {int to,net;long long val;
} e[520010];inline void add(int u,int v,long long w) {e[++tot].to=v;e[tot].val=w;e[tot].net=head[u];head[u]=tot;e[++tot].to=u;e[tot].val=0;e[tot].net=head[v];head[v]=tot;
}inline int bfs() {  //在惨量网络中构造分层图memset(dis,0x3f3f3f3f3f3f3f3f,sizeof dis); 
// 	for( int i=1;i<=n*n+4;i++) dis[i]=inf;queue<int> q;q.push(s);dis[s]=0;now[s]=head[s];while(!q.empty()) {int x=q.front();q.pop();for(int i=head[x];i;i=e[i].net) {int v=e[i].to;if(e[i].val>0&&dis[v]==0x3f3f3f3f3f3f3f3f) {q.push(v);now[v]=head[v];dis[v]=dis[x]+1;if(v==t) return 1;}}}return 0;
}inline int dfs(int x,long long sum) {  //sum是整条增广路对最大流的贡献if(x==t) return sum;long long k,res=0;  //k是当前最小的剩余容量 for(int i=now[x];i&&sum;i=e[i].net) {now[x]=i;  //当前弧优化 int v=e[i].to;if(e[i].val>0&&(dis[v]==dis[x]+1)) {k=dfs(v,min(sum,e[i].val));if(k==0) dis[v]=inf;  //剪枝,去掉增广完毕的点 e[i].val-=k;e[i^1].val+=k;res+=k;  //res表示经过该点的所有流量和(相当于流出的总量) sum-=k;  //sum表示经过该点的剩余流量 }}return res;
}
int dx[]={0,0,0,-1,1};
int dy[]={0,-1,1,0,0};
int main() {int c;scanf("%d%d%d",&n,&m,&c);s=n*n+1;t=n*n+2;for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);x++,y++;int pos=(x-1)*n+y;add(s,pos,1e9);
//		add(pos,S,0);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int pos=(i-1)*n+j;add(pos,t,c);for(int k=1;k<=4;k++){int x=i+dx[k];int y=j+dy[k];if(x>=1&&x<=n&&y>=1&&y<=n)add(pos,(x-1)*n+y,1);}}} while(bfs()) {ans+=dfs(s,inf);  //流量守恒(流入=流出) }printf("%lld",ans-c*m);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka基本知识整理

首先Kafka是一个分布式消息队列中间件&#xff0c;Apache顶级项目&#xff0c;https://kafka.apache.org/ 高性能、持久化、多副本备份、横向扩展。生产者Producer往队列里发送消息&#xff0c;消费者Consumer从队列里消费消息&#xff0c;然后进行业务逻辑。应用场景主要有&…

牛客练习赛89——牛牛小数点(未解决)

牛牛小数点 题意&#xff1a; 题解&#xff1a; 本题先说结论&#xff1a; 对于一个数x2a∗5b∗px2^a*5^b*px2a∗5b∗p 如果p1,也就是质因子只有2和5&#xff0c;则x是不循环小数&#xff0c;即f(x)0如果p!1,则x是循环的&#xff0c;且循环开始于小数点后第1max{p2,p5p_{2},…

针对.NET Core, Xamarin以及.NET的自动类型安全Rest库: Refit

本文大部分内容是针对Refit官网的翻译。官网地址&#xff1a; https://github.com/reactiveui/refitRefit是一个类似于Retrofit的Restful Api库&#xff0c;使用它&#xff0c;你可以将你的Restful Api定义在接口中。例如&#xff1a;public interface IGitHubApi { [Get(&quo…

2019牛客多校第一场

2019牛客多校第一场 题号题目知识点AMonotonic MatrixBSymmetric MatrixCFluorescent 2DTwo GraphsERemovalFSum of MaximumGSteiner TreeHLongest PathISubstringJDifferent Integers

用ProGet搭建本地私有NuGet仓库

搭建ProGet下载官网下载Windows版本的Inedo Hub &#xff08;https://inedo.com/proget/download&#xff09;下载下来的软件名&#xff1a; ProGetInstaller.exe安装点击ProGetInstaller.exe&#xff0c;出现如下安装界面Registration 选项选择 Free ;SQL Sever 选项选择 Spec…

CQRS架构下Equinox开源项目分析

一.DDD分层架构介绍本篇分析CQRS架构下的Equinox开源项目。该项目在github上star占有2.4k。便决定分析Equinox项目来学习下CQRS架构。再讲CQRS架构时&#xff0c;先简述下DDD风格&#xff0c;在DDD分层架构中&#xff0c;一般包含表现层、应用程序层(应用服务层)、领域层(领域服…

CF1548B Integers Have Friends

CF1548B Integers Have Friends 题意&#xff1a; 给定 n 和一个长度为 n 的数组 a&#xff0c;求一个最长的区间 [l,r]\left[l,r\right][l,r]&#xff0c;使得存在 m≥2和km\geq 2 和 km≥2和k&#xff0c;对于所有 l≤i≤rl\leq i\leq rl≤i≤r,ai≡k(modm)a_{i}≡k(\mod m…

仿B站(一) 目的分析以及创建 WebAPI + Angular7 项目

前言&#xff1a;本系列文章主要为对所学 Angular 框架的一次微小的实践&#xff0c;对 b站页面作简单的模仿。本系列文章主要参考资料&#xff1a;微软文档&#xff1a;    https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?viewaspnetcore-2.1&tabsw…

Codeforces Round #736 (Div. 1Div2)

Codeforces Round #736 (Div2) Codeforces Round #736 (Div. 1) 题号题目难度AGregor and Cryptography签到BGregor and the Pawn Game模拟CWeb of Lies思维DIntegers Have Friends思维st表EThe Three Little PigsF1Gregor and the Odd Cows (Easy)F2Gregor and the Odd Cows …

Mac中搭建Kubernetes

Kubernetes是Google和RadHat公司共同主导的开源容器编排项目&#xff0c;功能非常强大&#xff0c;也非常的火热和流行&#xff0c;但同时里面也有很多的概念和名词需要我们去学习和理解。学习任何一个技术先需要把基础环境搭建起来&#xff0c;本篇就介绍怎样在Mac中启动单节点…

CF1458C Latin Square

CF1458C Latin Square 题意&#xff1a; T 组测试数据&#xff0c;每次给一个 nnn\times nnn 的矩阵&#xff0c;每行每列都是个 1→n1\to n1→n 的排列。有 m 次操作&#xff0c;如果是 UDLR 就是要把整个矩阵每行/每列往一个方向循环移动一格。如果是 IC&#xff0c;就是把…

树莓派也跑Docker和.NET Core

树莓派就是一个卡片大小的迷你电脑。有了电脑&#xff0c;我们当然得先安装系统。系统下载https://www.raspberrypi.org/downloads/raspbian/ &#xff0c;我选择的Raspbian Stretch Lite&#xff0c;不带界面的最小安装。下载win32diskimager&#xff08;烧录系统&#xff09;…

Codeforces Round #700 (Div. 1Div. 2)

Codeforces Round #700 (Div. 1&&Div. 2) 题号题目知识点AYet Another String Game签到BThe Great Hero贪心CSearching Local Minimum思维二分DPainting the Array I贪心EPainting the Array II贪心FContinuous City二进制构造GOdd Mineral Resource莫队分块域值HScho…

开源]OSharpNS 步步为营系列 - 1. 业务模块设计

OSharpNS全称OSharp Framework with .NetStandard2.0&#xff0c;是一个基于.NetStandard2.0开发的一个.NetCore快速开发框架。这个框架使用最新稳定版的.NetCore SDK&#xff08;当前是.NET Core 2.2&#xff09;&#xff0c;对 AspNetCore 的配置、依赖注入、日志、缓存、实体…

CF1479A Searching Local Minimum

CF1479A Searching Local Minimum 题意&#xff1a; 题解&#xff1a; 先说结论&#xff1a; 若l&#xff0c;r满足&#xff1a; al−1>al,ar<ar1a_{l-1}>a_{l},a_{r}<a_{r1}al−1​>al​,ar​<ar1​al,al1,....,ara_{l},a_{l1},....,a_{r}al​,al1​,....…

C#8.0的两个有趣的新特性以及gRPC

最近每天忙着跑很多地方&#xff0c;回家就不想动了&#xff0c;没什么心情写东西。今天有空&#xff0c;稍微写一点。下文中&#xff1a;关于C#语法特性的部分需要Visual Studio 2019支持。关于.NET Core的部分需要安装.NET 3.0 Preview4&#xff0c;低版本或许也可以但我没实…

CF1479B Painting the Array

CF1479B1 Painting the Array I CF1479B1 Painting the Array II 题意&#xff1a; 本题与 CF1480D2 的唯一区别是本题询问最大可能解. 给定一个数组a,你将ai染为bi色,其中b是由你指定的一个01数组.将a数组中被染成0色的数字取出来并依在a中出现的顺序排列,组成数组a(0).同理…

在 ASP.NET Core 中安装 MVC

目录本文出自《从零开始学 ASP.NET CORE MVC》目录 视频课程效果更佳&#xff1a;从零开始学 Asp.Net Core MVC 在ASP.NET Core 中安装 MVC在本视频中&#xff0c;我们将讨论在 ASP.NET Core 应用程序中设置 MVC。到目前为止&#xff0c;我们在本系列视频中使用的 ASP.NET Core…

CF1479C Continuous City

CF1479C Continuous City 题意&#xff1a; 给定 L, R. 构造一个有向带权图, 其中点数不大于 32, 且所有边都是从较小的点指向较大的点. 假设这个有向图有 n 个点, 你需要保证从 1到n 的所有路径的权值都在 [L, R]内且不存在 x∈[L,R], 使得不存在或存在多于一条从 1 到 n 的…

Office转PDF,Aspose太贵,怎么办?

在程序开发中经常需要将Office文件转换成PDF&#xff0c;著名的Aspose的三大组件可以很容易完成这个功能&#xff0c;但是Aspose的每个组件都单独收费&#xff0c;而且每个都卖的不便宜。在老大的提示下&#xff0c;换了一种思路来解决这个问题。环境dotNetCore:2.1CentOS:7.5D…