[CF1105D]Kilani and the Game
题目大意:给出一个$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相关推荐
- Kilani and the Game
https://codeforces.com/contest/1105/problem/D C++版本一 题解: 双DFS 先枚举可以走的点 再从这个点出发,DFS在范围si内可以走所有点 /* *@ ...
- (CodeForces) D. Kilani and the Game (搜索)
视频讲解戳这里 传送门 题目大意:一个n*m的图,有空格子'.',也有障碍物'#',也有各个玩家的城堡,编号对应着玩家的编号1,2,3.....;每个玩家轮流开始,有他城堡的地方就可以向上下左右扩散, ...
- Codeforces Round #533 (Div. 2) D. Kilani and the Game
题意:给你n,m,p分别代表矩阵的为n*m,p个起点,每个起点的向四周扩散的速度为si 问最后每个起点可以占领多少个格子. 思路:很显然这是一个类bfs,但是有多个起点,而且规定了一次每个点只能走si ...
- Codeforces 刷题记录(已停更)
Codeforces 每日刷题记录 (已停更) 打'+'是一些有启发意义的题目,部分附上一句话题解,每日更新3题,大部分题目较水. Day ID Problem Tutorial Note 1 1 + ...
- python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)
本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...
- Codeforces Round #533 (Div. 2) C.思维dp D. 多源BFS
题目链接:https://codeforces.com/contest/1105 C. Ayoub and Lost Array 题目大意:一个长度为n的数组,数组的元素都在[L,R]之间,并且数组全 ...
- 免疫治疗之非小细胞肺癌 | MedChemExpress
肺癌是最常见的恶性肿瘤之一,其发病率和死亡率在全球所有癌症类型中居首位,其中,85% 以上为非小细胞肺癌 (NSCLC).在过去发展中,对 NSCLC 的治疗模式发生了重大改变: 这主要是因为有生物标 ...
- ArabellaCPC 2019 B. Road to Arabella
题目 这个题题意弄明白就会了,也就是对手有一个正整数n,你有一个正整数k<=n,每一次都能对n执行n-=x,(1≤x≤max(1,m−k));把0摆在对方面前就是赢了. 如此我们很容易想起奇偶性 ...
- Gym - 102263 B - Road to Arabella
原题内容 Ayoub and Kilani felt board while they are going to ArabellaCPC in (Amman-Irbid) road, so Kilan ...
- 【补题计划】Codeforces Round #533+#534(Div.2)
#533 D. Kilani and the Game 模拟一个游戏,每轮每个玩家可以把距离他拥有的领地的ki步内的格子占领,不能跨越别人的领地以及障碍,问最终每个人占领多少个格子. 写了好几种写法, ...
最新文章
- 计算机老师开场白试讲视频,教师招考试讲模版之开场白
- python列索引行的数据公式_用列和行索引函数填充dataframe缺失元素的最有效方法...
- 深度操作系统 Deepin 15.11 发布
- 自制合成孔径雷达(2) SDR实现的对比(SDR实现测速雷达)
- 2021-05-23
- 浅谈视频会议系统的运行与维护
- python爬虫爬拼多多销量_Python爬取各大汽车销量信息
- 【Linux】SOCKET编程
- MPEG-2压缩编码技术原理应用
- 【c】三角形图形输入 6*11 看懂这一个以后打印图形信手nian来
- 第1关:小球自由落体运动-------C语言程序设计技术(循环结构程序设计1)
- 使用 mysql_use_result 还是使用 mysql_store_result
- 深度森林deep-forest | ImportError: cannot import name ‘_joblib_parallel_args‘ from ‘sklearn.utils.fixes‘
- JSPEL表达式MVC三层结构综合案例
- Proteus8.9 VSM Studio GCC编译器仿真STM32F407ZGT6系列011_lcd1602_并口
- 泛微oa流程表单之明细表字段通过文本输入内容使另外一个字段必填
- JS 面向对象编程、原型链、原型继承(个人学习总结)
- 洛达芯片公牛方案适配APP使用参考
- 从招股书看“医疗AI第一股”鹰瞳科技财报六大亮点
- 软件项目管理-第七章软件项目进度基本概念(1):进度基本知识
热门文章
- uva11992-Fast Matrix Operations(区间增值、改值)
- Useful SQL script
- SQL Server(三):Select语句
- .NET 指南:资源的名称
- .NET现成程序给你用[四]
- MEncoder的基础用法—6.10. 保持视频画面比例
- 报错:Avoid adding reactive properties to a Vue instance or its root $data at runtime - declare it upfr
- Java基础SQL优化---面试题【一】
- MySql中创建用户以及设置其操作权限
- 经典排序算法(二)--桶排序Bucket Sort