补题链接:Here

本题属于一道模拟题

虽然这题介绍一大堆,总结起来就是几句话,给出地图n列,前4行是a的地盘,后四行是b的地盘,每个人地盘上面有星号代表大炮。

大炮会 3 * 3的波及周围,会一直传递,b先手,a立刻反击b出手的大炮,问b能不能消灭a全部的大炮,如果能最后剩余最大大炮数是几。

那么很显然,我们发现a处于究极被动方,b是无敌主动方,我们通过方便一次跑图,把攻击一个地方,波及到周边的大炮都合并到一个点去。

我们发现如果a最后的点数大于b的点数,那么b永远消灭不完a,输出-1。

否则,对于b来说,反正我都要把你a消灭干净,谁先谁后没得关系。但是出手的大炮却可以控制,把一个点上大炮数量最少的拉上去当炮灰,先死。

最后留下的一定大炮总数就是最大的了。

const int N = 110;
string g[10];
int a[N], b[N];
int cnta, cntb, cnt;
int n;
void dfs(int x, int y, int Edge) { // Edge边界
if (g[x][y] == '.')return ;
g[x][y] = '.', cnt++;
for (int i = -1; i <= 1; ++i)
for (int j = -1; j <= 1; ++j)
if (!i and !j)continue;
else {
int dx = x + i, dy = y + j;
if (dx >= Edge and dx < 4 + Edge and dy >= 0 and dy < n)
dfs(dx, dy, Edge);
}
}
void solve() {
cin >> n;
for (int i = 0; i < 8; ++i)cin >> g[i];
for (int i = 0; i < 4; ++i)
for (int j = 0; j < n; ++j)
if (g[i][j] == '*') {
cnt = 0;
dfs(i, j, 0);
a[++cnta] = cnt;
}
for (int i = 4; i < 8; ++i)
for (int j = 0; j < n; ++j)
if (g[i][j] == '*') {
cnt = 0;
dfs(i, j, 4);
b[++cntb] = cnt;
}
if (cnta > cntb) {cout << "-1\n"; return ;}
sort(b + 1, b + 1 + cntb);
int ans = 0;
for (int i = cnta; i <= cntb; ++i)ans += b[i];
cout << ans << "\n";
}

【每日一题】28. 模拟战役 (模拟 + DFS/BFS/并查集)的更多相关文章

  1. 【NOIP模拟_54测试】【并查集】【二进制】【搜索】【区间序列类】

    第一题 Mushroom的序列 大意: 给一个序列,求一段连续最长区间满足:最多改变一个数,使得区间是严格的上升子序列. 解: 直接扫描一遍,记一个最长上升子序列编号.然后从每一个编号为1 的点来判断 ...

  2. [CSP-S模拟测试]:地理课(并查集+线段树分治)

    题目传送门(内部题146) 输入格式 从$geography.in$读入数据. 第一行两个数$n,m$,表示有$n$个点,$m$个时刻.接下来$m$行每行三个数,要么是$1\ u\ v$,要么是$2\ ...

  3. [CSP-S模拟测试]:x(数学+并查集)

    题目背景 $\frac{1}{4}$遇到了一道水题,叒完全不会做,于是去请教小$D$.小$D$都没看就切掉了这题,嘲讽了$\frac{1}{4}$一番就离开了.于是,$\frac{1}{4}$只好来问 ...

  4. acdream 1685 多民族王国(DFS,并查集)

    Problem Description 娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫.娜娜发现这个王国有很多个民族组成,每个民族都有自己的 ...

  5. HDU 5438 Ponds (DFS,并查集)

    题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和. 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然 ...

  6. Codeforces Round #375 (Div. 2) D. Lakes in Berland (DFS或并查集)

    D. Lakes in Berland time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  7. ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)

    http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...

  8. CodeForces 731C Socks (DFS或并查集)

    题意:有n只袜子,k种颜色,在m天中,问最少修改几只袜子的颜色,可以使每天穿的袜子左右两只都同颜色. 析:很明显,每个连通块都必须是同一种颜色,然后再统计最多颜色的就好了,即可以用并查集也可以用DFS ...

  9. 判图的连通性(dfs,并查集)

    一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为偶数,或者只有2个点度数为奇数 当然判连通性 hdu 1878 欧拉回路 两种判连通的方法 dfs #include <iostr ...

  10. 【做题】BZOJ2342 双倍回文——马拉车&并查集

    题意:有一个长度为\(n\)的字符串,求它最长的子串\(s\)满足\(s\)是长度为4的倍数的回文串,且它的前半部分和后半部分都是回文串. \(n \leq 5 \times 10^5\) 首先,显然 ...

随机推荐

  1. .net core下优秀的日志框架使用解析,附源代码

    在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查.在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Seri ...

  2. Walrus 0.4发布:单一配置、多态运行,体验下一代应用交付模型

    今天,我们高兴地宣布云原生统一应用平台 Walrus 0.4 正式发布,这是一个里程碑式的版本更新.新版本采用了全新的应用模型--仅需进行单一配置,即可在多种模态的基础设施及环境中运行包括应用服务及周 ...

  3. JAVA培训

    类 类名 对象名=new 类名(); 面向对象的三种特性 * 封装 原理:利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体.数据被保护在抽象数据类型的内部,尽可能地隐藏 ...

  4. js 通过id、pid遍历集合获得树结构

    原数据 let adreeJson = [ {id: 1, name: '陕西省', pid: 0}, {id: 2, name: '山西省', pid: 0}, {id: 3, name: '广东省 ...

  5. C# 对象与JSON字符串互相转换

    一.JSON字符串转对象(反序列化) 1.使用Newtonsoft.Json 反序列化字符串转换为指定类型 (T) JsonConvert.DeserializeObject<T>(jso ...

  6. 快速认识什么是:Docker

    Docker,一种可以将软件打包到容器中并在任何环境中可靠运行的工具.但什么是容器以及为什么需要容器呢?今天就来一起学快速入门一下Docker吧!希望本文对您有所帮助. 假设您使用 Cobol 构建了 ...

  7. C# 常量 结构体 委托

    常量 const double PI = 3.1415926; 常量名命名一般使用大写字母 枚举类型 开发一个游戏,游戏角色有法师(Mage).射手(Archer).刺客(Assassin).坦克(T ...

  8. 基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI

    前言 定时任务调度应该是平时业务开发中比较常见的需求,比如说微信文章定时发布.定时更新某一个业务状态.定时删除一些冗余数据等等.今天给大家推荐一个基于.NET Core + Quartz.NET + ...

  9. 华企盾DSC服务器配置无法创建数据库

    测试连接的数据库用户没有创建数据库的权限,应该打开数据库控制台,把对应用户的权限都勾上

  10. ASR项目实战-数据

    使用机器学习方法来训练模型,使用训练得到的模型来预测语音数据,进而得到识别的结果文本,这是实现语音识别产品的一般思路. 本文着重介绍通用语音识别产品对于数据的诉求. 对数据的要求 训练集 相关要求,如 ...