题目大意:给出一个$n\times m(n,m\leqslant10^3)$的地图,有$k(k\leqslant9)$个玩家,第$i$个玩家速度为$s_i$。地图中$\#$代表障碍;$.$ 代表空地;数字代表是一名编号为此数字的玩家的城堡。每个玩家按编号轮流操作,每次操作把自己城堡周围$s_i$格内的空地变成自己城堡。直到没有玩家能操作为止。输出每名玩家城堡的个数。

题解:$bfs$,显然发现每个点只会扩展一次,用$k$个$queue$保存每个人的可扩展的城堡,模拟扩展即可,$s_i$可以每次扩展一格,扩展$s_i$次来解决。复杂度$O(nm)$

卡点:

C++ Code:

#include <algorithm>
#include <cctype>
#include <cstdio>
#include <queue>
#define maxn 1005
#define maxk 10
const int D[2][4] = {{1, 0, -1, 0}, {0, 1, 0, -1}};struct Point {int x, y;Point() { }Point(int __x, int __y) : x(__x), y(__y) { }
} ;
std::queue<Point> q[maxk];bool used[maxn][maxn], Continue[maxk];
int n, m, k, len[maxk], ans[maxk];inline bool over_range(int x, int y) {return x < 1 || x > n || y < 1 || y > m || used[x][y];
}int main() {scanf("%d%d%d", &n, &m, &k);for (int i = 0; i < k; ++i) scanf("%d", len + i);for (int i = 1; i <= n; ++i) {static char s[maxn];scanf("%s", s + 1);for (int j = 1; j <= m; ++j) if (s[j] != '.') {used[i][j] = true;if (isdigit(s[j])) {int pos = (s[j] & 15) - 1;++ans[pos];q[pos].push(Point(i, j));}}}for (int now = 0, num = k; num; now += 1 - k, now += now >> 31 & k) {static std::queue<Point> Q;std::queue<Point> &q = ::q[now];for (int Tim = len[now]; Tim; --Tim) {if (q.empty()) {num -= !Continue[now];Continue[now] = true;break;}while (!q.empty()) {Point u = q.front(); q.pop();for (int i = 0, x, y; i < 4; ++i) {x = u.x + D[0][i], y = u.y + D[1][i];if (!over_range(x, y)) {++ans[now];used[x][y] = true;Q.push(Point(x, y));}}}std::swap(q, Q);}}for (int i = 0; i < k; ++i) printf("%d ", ans[i]); puts("");return 0;
}

  

转载于:https://www.cnblogs.com/Memory-of-winter/p/10350986.html

[CF1105D]Kilani and the Game相关推荐

  1. Kilani and the Game

    https://codeforces.com/contest/1105/problem/D C++版本一 题解: 双DFS 先枚举可以走的点 再从这个点出发,DFS在范围si内可以走所有点 /* *@ ...

  2. (CodeForces) D. Kilani and the Game (搜索)

    视频讲解戳这里 传送门 题目大意:一个n*m的图,有空格子'.',也有障碍物'#',也有各个玩家的城堡,编号对应着玩家的编号1,2,3.....;每个玩家轮流开始,有他城堡的地方就可以向上下左右扩散, ...

  3. Codeforces Round #533 (Div. 2) D. Kilani and the Game

    题意:给你n,m,p分别代表矩阵的为n*m,p个起点,每个起点的向四周扩散的速度为si 问最后每个起点可以占领多少个格子. 思路:很显然这是一个类bfs,但是有多个起点,而且规定了一次每个点只能走si ...

  4. Codeforces 刷题记录(已停更)

    Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...

  5. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

    本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...

  6. Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS

    题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...

  7. 免疫治疗之非小细胞肺癌 | MedChemExpress

    肺癌是最常见的恶性肿瘤之一,其发病率和死亡率在全球所有癌症类型中居首位,其中,85% 以上为非小细胞肺癌 (NSCLC).在过去发展中,对 NSCLC 的治疗模式发生了重大改变: 这主要是因为有生物标 ...

  8. ArabellaCPC 2019 B. Road to Arabella

    题目 这个题题意弄明白就会了,也就是对手有一个正整数n,你有一个正整数k<=n,每一次都能对n执行n-=x,(1≤x≤max(1,m−k));把0摆在对方面前就是赢了. 如此我们很容易想起奇偶性 ...

  9. Gym - 102263 B - Road to Arabella

    原题内容 Ayoub and Kilani felt board while they are going to ArabellaCPC in (Amman-Irbid) road, so Kilan ...

  10. 【补题计划】Codeforces Round #533+#534(Div.2)

    #533 D. Kilani and the Game 模拟一个游戏,每轮每个玩家可以把距离他拥有的领地的ki步内的格子占领,不能跨越别人的领地以及障碍,问最终每个人占领多少个格子. 写了好几种写法, ...

最新文章

  1. 计算机老师开场白试讲视频,教师招考试讲模版之开场白
  2. python列索引行的数据公式_用列和行索引函数填充dataframe缺失元素的最有效方法...
  3. 深度操作系统 Deepin 15.11 发布
  4. 自制合成孔径雷达(2) SDR实现的对比(SDR实现测速雷达)
  5. 2021-05-23
  6. 浅谈视频会议系统的运行与维护
  7. python爬虫爬拼多多销量_Python爬取各大汽车销量信息
  8. 【Linux】SOCKET编程
  9. MPEG-2压缩编码技术原理应用
  10. 【c】三角形图形输入 6*11 看懂这一个以后打印图形信手nian来
  11. 第1关:小球自由落体运动-------C语言程序设计技术(循环结构程序设计1)
  12. 使用 mysql_use_result 还是使用 mysql_store_result
  13. 深度森林deep-forest | ImportError: cannot import name ‘_joblib_parallel_args‘ from ‘sklearn.utils.fixes‘
  14. JSPEL表达式MVC三层结构综合案例
  15. Proteus8.9 VSM Studio GCC编译器仿真STM32F407ZGT6系列011_lcd1602_并口
  16. 泛微oa流程表单之明细表字段通过文本输入内容使另外一个字段必填
  17. JS 面向对象编程、原型链、原型继承(个人学习总结)
  18. 洛达芯片公牛方案适配APP使用参考
  19. 从招股书看“医疗AI第一股”鹰瞳科技财报六大亮点
  20. 软件项目管理-第七章软件项目进度基本概念(1):进度基本知识

热门文章

  1. uva11992-Fast Matrix Operations(区间增值、改值)
  2. Useful SQL script
  3. SQL Server(三):Select语句
  4. .NET 指南:资源的名称
  5. .NET现成程序给你用[四]
  6. MEncoder的基础用法—6.10. 保持视频画面比例
  7. 报错:Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfr
  8. Java基础SQL优化---面试题【一】
  9. MySql中创建用户以及设置其操作权限
  10. 经典排序算法(二)--桶排序Bucket Sort