(2019 CCPC 秦皇岛)E - Escape

2024-03-20 16:58
文章标签 2019 escape ccpc 秦皇岛

本文主要是介绍(2019 CCPC 秦皇岛)E - Escape,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解:这个题如果能想到每个机器人的路径都不是相同的那就很好解决了,因为在一个地方只能有一种转向的选择嘛。然后将一个点拆点四个方向就行了,(不过我交了网上几个代码都wa了,emmm

#include<bits/stdc++.h>
#define il inline
#define pb push_back
#define ms(_data) memset(_data,0,sizeof(_data))
using namespace std;
typedef long long ll;
const ll inf=0x3f3f3f3f;
const int N=1e5+5;
template <typename _Tp> il void read(_Tp&x) {char ch;bool flag=0;x=0;while(ch=getchar(),!isdigit(ch)) if(ch=='-')flag=1;while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();if(flag) x=-x;
}
struct edge {int to, cap, rev;
};
vector<edge> eg[N];
int dep[N],arc[N],s,t,n,m,a,b,base;
il void init(){for(int i=s;i<=t;++i) eg[i].clear();
}
il int hs(int x,int y){return x*m+y;
}
il void add(int f,int t,int w) {eg[f].pb(edge {t,w,(int)eg[t].size()});eg[t].pb(edge {f,0,(int)eg[f].size()-1});
}
il void bfs(int s) {memset(dep,-1,sizeof(dep));queue<int>q;q.push(s);dep[s]=0;int v;while(!q.empty()) {v=q.front();q.pop();for (int i=0; i<(int)eg[v].size(); ++i) {edge &e=eg[v][i];if (e.cap>0 && dep[e.to]==-1) {dep[e.to]=dep[v]+1;q.push(e.to);}}}
}
il int dfs(int v,int t,int f) {if(v==t) 	return f;int d;for(int &i=arc[v]; i<(int)eg[v].size(); ++i) {edge &e=eg[v][i];if (e.cap>0 && dep[v]+1==dep[e.to]) {d=dfs(e.to,t,min(f, e.cap));if (d>0) {e.cap -= d;eg[e.to][e.rev].cap+=d;return d;}}}return 0;
}
il int dinic(int s,int t) {int flow = 0,d;while(1) {bfs(s);if (dep[t]==-1)	return flow;memset(arc,0,sizeof(arc));while ((d=dfs(s,t,inf))>0) {flow+=d;}}
}
char mp[105][105];
int main() {int T;read(T);while(T--){read(n),read(m),read(a),read(b);s=0,base=(n+2)*(m+2),t=2*base;init();for(int i=1;i<=n;++i){scanf("%s",mp[i]+1);}int x;for(int i=1;i<=a;++i){read(x);add(s,hs(1,x),1);}for(int i=1;i<=b;++i){read(x);add(hs(n+1,x),t,1);}for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){if(mp[i][j]=='0'){if(i-1>=1) add(hs(i,j),hs(i-1,j),1);if(i+1<=n) add(hs(i,j),hs(i+1,j),1);if(j-1>=1) add(hs(i,j)+base,hs(i,j-1)+base,1);if(j+1<=m) add(hs(i,j)+base,hs(i,j+1)+base,1);if(i+1==n+1) add(hs(i,j),hs(i+1,j),1);add(hs(i,j),hs(i,j)+base,1);add(hs(i,j)+base,hs(i,j),1);}}}if(dinic(s,t)==a) printf("Yes\n");else printf("No\n");}return 0;
}

 

这篇关于(2019 CCPC 秦皇岛)E - Escape的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830145

相关文章

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

2023 CCPC(秦皇岛)现场(第二届环球杯.第 2 阶段:秦皇岛)部分题解

所有题目链接:Dashboard - The 2023 CCPC (Qinhuangdao) Onsite (The 2nd Universal Cup. Stage 9: Qinhuangdao) - Codeforces 中文题面: contest-37054-zh.pdf (codeforces.com) G. Path 链接: Problem - G - Codeforces

2019学习计划

工作三年了,第一年感觉是荒废的,第二年开始学习python,第三年开始自动化 感觉自己会的东西比较少,而且不够深入,流于表面 现制定一下今年大概的学习计划 需持续巩固加强:python、ui自动化、接口自动化、sql等 代码量需提升,敲的不够(重点) 学习: 1.移动端测试,appium等 2.前端知识系统整理学习  3.性能测试 4.docker入门,环境搭建 5.shell

最简单的使用JDBC[连接数据库] mysql 2019年3月18日

最极简版本的, 我们这里以mysql为例: 首先要创建maven工程, 需要引入jar包:,这里需要注意, 如果你安装的是mysql最新版本8以上的, 下面有些地方需要更改,具体就是mysql连接的url, 和5版本的不一样,具体解决请自行百度哈.这里只演示mysql5版本的? 依赖: <dependency>   <groupId>mysql</groupId>   <artifactId

(php伪随机数生成)[GWCTF 2019]枯燥的抽奖

审核源码发现加载check.php,审计发现使用了mt_rand()函数,这个函数生成的值是伪随机的 参考下面这篇文章 PHP mt_rand安全杂谈及应用场景详解 - FreeBuf网络安全行业门户 kali里面输入下载工具 git clone https://github.com/openwall/php_mt_seed.git cd进去输入make后编译出的文件先

2019年2月17日

今天又重新看了一下输出第1500个丑数 在我错了八次之后发现要输出一个句号还要输出换行 接下来的两天应该进入复习阶段了。

2019ICPC秦皇岛I Invoker

Problem Description 在 dota2 中有一个叫做祈求者(Invoker)的英雄,在游戏中他有三个基础技能:冰(Quas),雷(Wex),火(Exort),每施展一个技能就可以获得相应属性的一个法球(element)。 但是祈求者同时最多只能有三个法球,即如果他在有三个法球的状态下又使用了某个法球技能,那么他会获得该法球,并失去之前三个法球中最先获得的一个。 不难得出,祈求者身

National Contest for Private Universities (NCPU), 2019 E. Generalized Pascal's Triangle

编辑代码 2000ms 262144K Generalized Pascal's Triangle Pascal's triangle is a triangular array in which each number can be calculated by the sum of the two numbers directly above that number as shown i

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术 2019-7-8

导读:损失函数对神经网络的训练有显著影响,也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数。后来,Szegedy 等学者提出了标签平滑方法,该方法通过计算数据集中 hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。近日,Hinton 团队等人在新研究论文《When Does Label Smoothing Help?》中,就尝试对标签平滑技术对

Photoshop CC 2019圆形的抠图

快速进入矩形选区 快速在矩形和圆形选区之前切换: shift+M 选择的时候,按住shift,可以选中正方形/圆形   以中心点画圆: alt + 拖拽 再利用变换选区功能即可实现圆的选中 效果如图所示: 再使用自由变换,即可放大,缩小球的大小: ctrl + T 阴影部分的处理: 1)去其他球那里选择个椭圆形选区 2)选择编辑-填充 3)使用滤镜里