2015 百度之星 1003 棋盘占领 dfs
棋盘占领
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=601&pid=1003
Description
百小度最近迷恋上了一款游戏,游戏里有一个n*m的棋盘,每个方格代表一个城池。 一开始的时候我们有g支军队,驻扎并占领了其中某些城池。然后我们可以在这些被占领城池的基础上,吞并占领周围的城池。
而其吞并占领的规则是这样的——一旦一个城池A相邻的上下左右四个城池中至少存在两个被占领,且这两个被占领的城池有公共点,那么城池A也将被占领。 比如我们用1表示初始的占领状态,0表示初始的未占领状态。 那么——
10
01
会最终会变成
11
11
而101则保持为101不变 现在告诉你一张地图一开始所有被占领城池的信息,问你最后多少个城池会被我们占领。
Input
下面T组数据,对于每组数据, 第一行是两个数n,m(1≤n,m≤500),表示国土的大小为n*m。
第二行是一个整数g(1≤g≤1000),表示我们一开始占领的城池数。 然后跟随g行,第i行一对整数x,y(1≤x≤n,1≤y≤m),表示占领的第i个城池的坐标。
Output
对第i组数据,输出
Case #i:
然后输出一行,仅包含一个整数,表示最终有多少个城池被占领。
Sample Input
4 2 2 2 1 1 2 2 3 3 3 1 1 2 3 3 2 2 4 5 1 1 1 1 1 2 1 3 1 4 2 4 2 1 1 2 4
Sample Output
Case #1:
4
Case #2:
9
Case #3:
4
Case #4:
2
HINT
题意
题解:
直接暴力修改就好,这份代码是kuangbin的,我看不了我的代码 = =
我是dfs修改的,和某次cf的题很类似
代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
bool f[][]; int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
int n,m;
int iCase = ;
scanf("%d",&T);
while(T--){
iCase++;
scanf("%d%d",&n,&m);
memset(f,false,sizeof(f));
int x,y;
int g;
scanf("%d",&g);
while(g--){
scanf("%d%d",&x,&y);
x--;
y--;
f[x][y] = true;
}
while(){
bool add = false;
for(int i = ;i < n;i++)
for(int j = ;j < m;j++){
if(f[i][j])continue;
if(i > && j < m- && f[i-][j] && f[i][j+]){
f[i][j] = true;
add = true;
continue;
}
if(i > && j > && f[i-][j] && f[i][j-]){
f[i][j] = true;
add = true;
continue;
}
if(i < n- && j > && f[i+][j] && f[i][j-]){
f[i][j] = true;
add = true;
continue;
}
if(i < n- && j < m- && f[i+][j] && f[i][j+]){
f[i][j] = true;
add = true;
continue;
}
}
if(!add)break;
}
int ans = ;
for(int i = ;i < n;i++)
for(int j = ;j < m;j++)
ans += f[i][j];
printf("Case #%d:\n%d\n",iCase,ans);
}
return ;
}
2015 百度之星 1003 棋盘占领 dfs的更多相关文章
- BFS 2015百度之星初赛2 HDOJ 5254 棋盘占领
题目传送门 /* BFS:先把1的入队,每个1和它相邻的组合后看看能不能使0变1,若有则添加入队,change函数返回改变了多少个0 注意:结果还要加上原来占领的 */ #include <cs ...
- 模拟 2015百度之星资格赛 1003 IP聚合
题目传送门 /* 模拟水题,排序后找出重复的ip就可以了 */ #include <cstdio> #include <iostream> #include <algor ...
- 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换
题目传送门 /* 二分搜索:在0-1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c 比赛时以为是贪心,榨干智商也想不出来:( ...
- 数学 2015百度之星初赛2 HDOJ 5255 魔法因子
题目传送门 /* 数学:不会写,学习一下这种解题方式:) 思路:设符合条件的数的最高位是h,最低位是l,中间不变的部分为mid,由题意可得到下面的公式(这里对X乘上1e6用a表示,b表示1e6) (h ...
- LIS 2015百度之星初赛2 HDOJ 5256 序列变换
题目传送门 题意:中文题面 分析:LIS(非严格):首先我想到了LIS,然而总觉得有点不对:每个数先减去它的下标,防止下面的情况发生:(转载)加入序列是1,2,2,2,3,这样求上升子序列是3,也就是 ...
- Kruskal 2015百度之星初赛2 HDOJ 5253 连接的管道
题目传送门 /* 最小生成树(Kruskal):以权值为头,带入两个端点,自然的排序;感觉结构体的并查集很好看 注意:题目老头要的是两个农田的高度差,中文水平不好,题意理解成和平均值的高度差! */ ...
- 二分查找 2015百度之星初赛1 HDOJ 5246 超级赛亚ACMer
题目传送门 /* 二分找到不大于m的最大的数,记做p,只要a[p] + k <= a[p+1]就继续 注意:特判一下当没有比m小的数的情况:) */ #include <cstdio> ...
- ACM学习历程—BestCoder 2015百度之星资格赛1003 IP聚合(set容器)
Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个网络地址.网 ...
- 2015百度之星 IP聚合
IP聚合 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Descri ...
随机推荐
- CentOS7手动编译安装内核4.11.7
1. 进入/usr/src/目录 cd /usr/src 2. 下载内核源码,网址:https://www.kernel.org wget https://cdn.kernel.org/pub/lin ...
- (十五)linux下gdb调试
一.gdb常用命令: 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或 ...
- centos 引导盘
# grub.conf generated by anaconda## Note that you do not have to rerun grub after making changes to ...
- (转)关于bootstrap, boosting, bagging,Rand forest
转自:https://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, ...
- linux命令(50):top命令
TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中C ...
- LeetCode239. Sliding Window Maximum
Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...
- mysql-备份及关联python
阅读目录 IDE工具介绍 MySQL数据库备份 mysqldump实现逻辑备份 回复逻辑备份 备份/恢复案例 自动化备份 表的导出和导入 数据库迁移 pymysql模块 一 链接.执行sql.关闭(游 ...
- Search a 2D Matrix——两度二分查找
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- Jquery当div超出页面时就固定到顶部否则跟随页面滚动
$.fn.smartFloat = function () { var position = function (element) { var top = element.position().top ...
- 关于rem的一点总结【原创】
关于rem的一点总结 最近在写一个关于小说阅读的webApp,由于没有借用任何框架,所以很多底层的内容都需要自己去解决,幸好的是这次只是关于移动端的内容,还不至于去向着jquery的方向码代码.言归正 ...