目录

题目描述

输入描述:

输出描述:

输入

输出

输入

输出

思路:

代码:


题目描述

齐齐和司机在玩单机游戏《红色警戒IV》,现在他们的游戏地图被划分成一个n*m的方格地图。齐齐的基地在最上方的4行格内,司机的基地在最下方的4行格内。他们只有一种攻击方式:远程大炮,相关属性如下:

1、    大炮可以打到地图的任意一个位置。

2、    双方每次必须动用本方的一门大炮攻击,齐齐先手,双方交替进行攻击。
3、    一方大炮只能攻击另一方大炮,不能攻击本方或强制攻击未获得视野的地区。
4、    被一方大炮击中的另一方大炮会产生以攻击点为中心3*3的波及区域,波及区域内如果有其他大炮则也会产生3*3的波及区域。
5、    两方的基地相距很远,所以不存在攻打敌方大炮时波及到本方大炮的情况。
齐齐偷偷开了“间谍卫星”,所以他能看到司机的大炮部署,司机则无视野。但如果齐齐做出攻击,司机会立即获取到发动攻击的大炮的视野,并在回合开始时动用大炮(如果存在的话)将其摧毁(摧毁后可能产生的连锁不计入视野)。
现在给出齐齐和司机的大炮部署,问齐齐在选择最优的策略下,在摧毁所有司机的大炮后可以保留最多几门本方大炮。

输入描述:

第1行输入一个整数m,表示地图的宽度。
第2-5行,每行输入一串长度为m的字符串,代表司机的大炮部署。(大炮为"*"号,空地为“.”号)
第6-9行,每行输入一串长度为m的字符串,代表齐齐的大炮部署。(大炮为"*"号,空地为“.”号)
数据保证:0<m≤100

输出描述:

输出一行,一个整数。代表摧毁所有司机的大炮后最多保留几门大炮。如果不能摧毁所有司机的大炮,则输出-1。

示例1

输入

3
...
.*.
..*
*..
*..
.**
...
*.*

输出

4

示例2

输入

3
*..
..*
...
...
...
...
.*.
...

输出

-1

思路:

1,策略:齐齐用最小的打司机的最大的,剩下最多的

2,dfs实现联通块

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxj=200;
int a[5*maxj],b[5*maxj];
char c1[5][maxj],c2[5][maxj]; //分成两部分分别记载,更容易.
int vis[5][maxj],cnt,m,n,cnt1,cnt2;
int xx[]={-1,1,0,0,-1,-1,1,1};
int yy[]={0,0,1,-1,1,-1,1,-1};
void dfs(int x,int y,char c[5][maxj]){ //建立联通块vis[x][y]=1;cnt++;for(int i = 0;i <= 7; ++i ){int tx=x+xx[i],ty=y+yy[i];if(tx<1||tx>4||ty<1||ty>m||vis[tx][ty])continue;if(c[tx][ty]=='*')dfs(tx,ty,c);}
}
void solve(){for(int i=1;i<=4;++i){for(int j=1;j<=m;++j){cnt=0;//可能一行有多个联通块if(c1[i][j]=='*'&&vis[i][j]!=1)dfs(i,j,c1),b[++cnt2]=cnt;}}memset(vis,0,sizeof(vis));for(int i=1;i<=4;++i){for(int j=1;j<=m;++j){cnt=0;if(c2[i][j]=='*'&&vis[i][j]!=1)dfs(i,j,c2),a[++cnt1]=cnt;}}
}
int main(){scanf("%d",&m);for(int i=1;i<=4;++i){for(int j=1;j<=m;++j){cin>>c1[i][j];}}for(int i=1;i<=4;++i){for(int j=1;j<=m;++j){cin>>c2[i][j];}}solve();sort(a+1,a+1+cnt1);if(cnt1<cnt2){cout<<-1;return 0;}else{int ans=0;while(cnt2<=cnt1){ans += a[cnt2++];}cout << ans;}return 0;
}

模拟战役题解(dfs,联通块,贪心)相关推荐

  1. F 魏迟燕的自走棋(思维+贪心+并查集维护联通块/左部点配对边<=2的匈牙利)

    https://ac.nowcoder.com/acm/contest/9984/F 参考:F 魏迟燕的自走棋(贪心+并查集) 将每个人看成一个点,武器的能力值抽象成边,这样就转化成图论的模型了. 然 ...

  2. [CQOI2012]模拟工厂 题解(搜索+贪心)

    [CQOI2012]模拟工厂 题解(搜索+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327574 链接题目地址:洛谷P3161 BZOJ P26 ...

  3. R6饮料AK赛(NOIP模拟赛)/省选专练HDU 5713 K个联通块

    我好菜啊100+60+30 滚犊子吧,两天加起来才410搞个屁我一年前都可以考400 不说了,题毕竟比较难 T1还是水题但是比昨天难 这是一个开绝对值不等式的题. 根据对奇数和偶数的最优根的归纳一定有 ...

  4. HDU 2952 Counting Sheep (DFS找联通块)

    题目链接:请戳这里.   题目大意及思路:读懂题意就好了,就是DFS找联通块. 没什么好说的,见代码吧. #include<cstdio> #include<cstring> ...

  5. Noip2021模拟赛题解

    Noip2021模拟测试赛(一) A 游戏 A A A 先从 ( 1 , 1 ) (1,1) (1,1) 移动到 ( 2 , m ) (2, m) (2,m), B B B 再从 ( 1 , 1 ) ...

  6. 中山纪中训练游记Day1+8.1模拟赛题解

    Part.I游记 纪中的电脑真好,开个资源监视器就蓝屏了(插上U盘也有蓝屏).我... (F**k 纪中的OJ怎么和CCF的这么像? 上午比赛做第一题的时候用并查集判断是否是同一个连通块的时候把并查集 ...

  7. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

  8. 区间动态规划考试反思总结——颜色联通块 分离与合体 括号涂色

    引子: 额~今天我们昨天才学了区间DP, 还没来得及复习就迎来了老师最喜欢的--我们最喜欢的模拟考试.但是,好像题已经超乎了我的想象. 啊啊啊啊啊啊啊啊啊!!! 后面两道没怎么读懂题啊! First ...

  9. Uva572(DFS+联通集)

    题目地址 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=838& ...

最新文章

  1. Django进阶Model篇001 - mysql 数据库的配置
  2. 给 IConfiguration 写一个 GetAppSetting 扩展方法
  3. 【渝粤题库】陕西师范大学209013 计量经济学 作业
  4. 转3d视图快捷键_最全Solidworks快捷键,值得收藏!
  5. 对一个 复杂的json结果进行取值的例子
  6. matlab 读取mov文件格式,VideoReader 支持的文件格式 - MATLAB VideoReader.getFileFormats - MathWorks 中国...
  7. opensplice dds v6.3.2_DDS生态社区带你解读|Filecoin创始人胡安:数据存储需求未来会增长3倍...
  8. python + mysql 实现账号管理系统
  9. python scheduler cron_Python轻量级定时任务调度框架“APScheduler”
  10. Diino - 具有自动数据备份功能的国外2G免费网络硬盘
  11. typecho支持html,为Typecho文章增加HTML标签支持
  12. java生成pdf合同
  13. centos 定时任务
  14. IOU破局之路 | Focal EIOU:打破IOU/GIOU/CIOU的局限
  15. (目录)微气候模型ENVI-met模拟的基本使用教程
  16. 网站301转向代码大全
  17. 数据分析进阶必看干货!销售额下滑详细分析案例
  18. Mixed-Integer Optimization with Constraint Learning
  19. ubuntu18.04使用xrdp远程连接
  20. 35岁后最可怕的事,就是成为职场中的奢侈品

热门文章

  1. 如何正确的进行人生规划
  2. 叉乘坐标公式--求面积
  3. 【TOML配置文件】配置文件我用TOML!人性化,少出错!
  4. 如何无需root卸载Android预装应用
  5. React入门(3)-- React的错误边界(Error Boundaries)
  6. 保研经验贴—上岸中国科学技术大学
  7. 从零开始丨使用Unity3D进行VIVE VR游戏开发
  8. 用定时器实现色块颜色渐变/色块切换效果(HTML+CSS+JS)
  9. mysql数据库 外键约束
  10. Nat Microbio | 上师大乔永利组-大豆疫霉与宿主之间的“营养争夺战”