OIBH即将浴火重生

                OIBH即将浴火重生

                                              发布在E-star即将上线之际

各位OIer,ACMer爱好者OIBH老用户:


也 许您曾是OIBH中的一个分子,也许您尚未听过OIBH的名字,但我们希望能够成为您的朋友。OIBH曾经是ACMer、OIER的一个家,在过去的几年 中,OIBH陪伴着我们走过了在算法竞赛(OI/ACM)领域奋斗的日子。这里是编程的练习场、算法的集散地、优化的灵感屋。短短的几年中,OIBH拥有 了数量可观的用户,大家在这里汲取了知识、取得了进步,让OIBH迸发出了蓬勃的生命力。


在一次事故中,OIBH失去了和 我们大家的联系,OIBH原站www.oibh.org/bbs不能正常访问,我们无时无刻不为此事而焦虑,我们始终没有忘记广大用户的支持与与信任,和 肩负的责任。如今我们正在为论坛全新上线积极准备着,2010年11月至今,OIBH与北京市青少年计算机竞赛办公室强强联合,并投入了大量的人力和财 力,以最受全国OIer,ACMer欢迎的论坛为目标,打造了一个全新的网络交流学习平台,并为其命名为“E星”E-star,寓意OI群星汇聚于此,智 慧点亮灿烂人生。论坛2011年3月开始内部测试,预计年度中旬上线与大家见面,E-star将为各位用户带来更好的服务(包括不限于):


更 加负责的版务管理。每位管理员都将尽心竭力地专注于管理工作,为将E-star打造成丰富、严谨、及时、多样化的论坛而努力。Online Judge服务。E-star将提供质量更高、功能更全的Online Judge服务,让算法讨论与实战相结合,加强论坛与OJ的联系,为用户提供更好的学习环境。提供基于学校团队的服务。新论坛的服务对象不仅限于个人,还 包括学校。各学校可以在E-star上建立团队,竞赛教师或学生教练可以实现自办比赛、布置作业、查看学生做题进度等功能。各个学校团队之间可以共享题目 与比赛。为OI教学提供了更便捷、实用的方式。建立更加开放、全面、高质的学习资料库。金牌教练名师点金。E-star将于NOI金牌教练开展合作,为用 户提供优质的资料与试题。OIBH期待与你久别重逢,北京市计算机竞赛办公室期待与你的相知相识,E-star期待与你的共同成长,同时,我们也希望在筹 备期间听到您珍贵的意见和建议。我们很期待您的建议和意见发给我们的管理员 (w4ppsxy[a$t]126[d$ot]com,leokan[a$t]vip[d$ot]qq[d$ot]com)
让我们共同品味成长的快乐,相约新的春天。 


                                                                            北京市计算机竞赛办公室以及原OIBH团队
                                                                                          2011年 2月 26日




(上线前活动一:正式上线后前100个注册的奖励100积分)
(上线前活动二:发邮件到estar2011@qq.com可以申请提前内测论坛的名额,邮件内说明要注册的帐号)

### 关于洛谷 P1506 拯救oibh总部的题解 此问题的核心在于处理一个二维网格中的连通块问题。具体来说,给定一张由字符 `'*'` 和 `'0'` 组成的地图,其中 `'*'` 表示障碍物或围墙,而 `'0'` 则表示可通行区域。题目要求计算那些完全被 `'*'` 包围的 `'0'` 的数量。 #### 方法解析 一种常见的方法是从地图的第一格到最后一格逐一扫描并标记目标点。然而,在本题中推荐了一种更为高效的策略——从外围向内部搜索[^1]。这种做法基于如下观察: - 地图边界上的任何 `'0'` 都不可能被完全包围,因为它们至少有一侧暴露在外。 - 因此可以从地图的四条边出发,利用广度优先搜索(BFS)或者深度优先搜索(DFS),将所有与边界相连的 `'0'` 标记为不可计数的部分。 完成上述操作后,剩余未访问过的 `'0'` 即为完全被 `'*'` 包围的目标点。 以下是实现该算法的具体代码示例: ```python from collections import deque def bfs(grid, visited, rows, cols, start_x, start_y): queue = deque() directions = [(0, 1), (1, 0), (-1, 0), (0, -1)] queue.append((start_x, start_y)) visited[start_x][start_y] = True while queue: current_x, current_y = queue.popleft() for dx, dy in directions: new_x, new_y = current_x + dx, current_y + dy if 0 <= new_x < rows and 0 <= new_y < cols and not visited[new_x][new_y]: if grid[new_x][new_y] == '0': visited[new_x][new_y] = True queue.append((new_x, new_y)) def count_enclosed_zeros(grid, rows, cols): visited = [[False for _ in range(cols)] for _ in range(rows)] # 外层遍历第一行和最后一行 for y in range(cols): if grid[0][y] == '0' and not visited[0][y]: bfs(grid, visited, rows, cols, 0, y) if grid[rows - 1][y] == '0' and not visited[rows - 1][y]: bfs(grid, visited, rows, cols, rows - 1, y) # 外层遍历第一列和最后一列 for x in range(rows): if grid[x][0] == '0' and not visited[x][0]: bfs(grid, visited, rows, cols, x, 0) if grid[x][cols - 1] == '0' and not visited[x][cols - 1]: bfs(grid, visited, rows, cols, x, cols - 1) enclosed_count = 0 for i in range(1, rows - 1): for j in range(1, cols - 1): if grid[i][j] == '0' and not visited[i][j]: enclosed_count += 1 return enclosed_count ``` 以上代码实现了 BFS 来标记所有与外部连接的 `'0'` 并统计最终孤立的 `'0'` 数量。 #### 总结 通过从外围开始搜索的方式可以有效减少不必要的复杂性,并提高解决问题的效率。这种方法不仅适用于当前题目,还可以推广至其他类似的连通块问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值