hdu 5254 水题
纯暴力就能过的,可是题目描述真心不清楚,我看了好久好久才明白题目啥意思。
为了迅速打完,代码比较冗余。
/*
* Author : ben
*/
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <stack>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <functional>
#include <numeric>
#include <cctype>
using namespace std;
typedef long long LL;
typedef long long LL;
/*
* 输入非负整数
* 支持short、int、long、long long等类型(修改typec即可)。
* 用法typec a = get_int();返回-1表示输入结束
*/
typedef int typec;
typec get_int() {
typec res = , ch;
while (!((ch = getchar()) >= '' && ch <= '')) {
if (ch == EOF)
return -;
}
res = ch - '';
while ((ch = getchar()) >= '' && ch <= '')
res = res * + (ch - '');
return res;
}
//输入整数(包括负整数,故不能通过返回值判断是否输入到EOF,本函数当输入到EOF时,返回-1),用法int a = get_int2();
int get_int2() {
int res = , ch, flag = ;
while (!((ch = getchar()) >= '' && ch <= '')) {
if (ch == '-')
flag = ;
if (ch == EOF)
return -;
}
res = ch - '';
while ((ch = getchar()) >= '' && ch <= '')
res = res * + (ch - '');
if (flag == )
res = -res;
return res;
}
/**
* 输入一个字符串到str中,与scanf("%s", str)类似,
* 会忽略掉缓冲区中的空白字符。返回值为输入字符串
* 的长度,返回-1表示输入结束。
*/
int get_str(char *str) {
char c;
while ((c = getchar()) <= ' ') {
if(c == EOF) {
return -;
}
}
int I = ;
while (c > ' ') {
str[I++] = c; c = getchar();
}
str[I] = ;
return I;
} const int MAXN = ;
const int MAXM = ;
char graph[MAXN][MAXN];
int N, M, cnt;
int X[MAXM], Y[MAXM]; bool dfs(int x, int y) {
bool flag = false;
if (graph[x - ][y - ] == ) {
if (graph[x - ][y] == ) {
graph[x - ][y] = ;
X[cnt] = x - ;
Y[cnt] = y;
cnt++;
flag = true;
dfs(x - , y);
}
if (graph[x][y - ] == ) {
graph[x][y - ] = ;
X[cnt] = x;
Y[cnt] = y - ;
cnt++;
flag = true;
dfs(x, y - );
}
}
if (graph[x - ][y + ] == ) {
if (graph[x - ][y] == ) {
graph[x - ][y] = ;
X[cnt] = x - ;
Y[cnt] = y;
cnt++;
flag = true;
dfs(x - , y);
}
if (graph[x][y + ] == ) {
graph[x][y + ] = ;
X[cnt] = x;
Y[cnt] = y + ;
cnt++;
flag = true;
dfs(x, y + );
}
}
if (graph[x + ][y - ] == ) {
if (graph[x + ][y] == ) {
graph[x + ][y] = ;
X[cnt] = x + ;
Y[cnt] = y;
cnt++;
flag = true;
dfs(x + , y);
}
if (graph[x][y - ] == ) {
graph[x][y - ] = ;
X[cnt] = x;
Y[cnt] = y - ;
cnt++;
flag = true;
dfs(x, y - );
}
}
if (graph[x + ][y + ] == ) {
if (graph[x + ][y] == ) {
graph[x + ][y] = ;
X[cnt] = x + ;
Y[cnt] = y;
cnt++;
flag = true;
dfs(x + , y);
}
if (graph[x][y + ] == ) {
graph[x][y + ] = ;
X[cnt] = x;
Y[cnt] = y + ;
cnt++;
flag = true;
dfs(x, y + );
}
}
return flag;
} void work() {
bool change = true;
while (change) {
change = false;
for (int i = ; i < cnt; i++) {
if (dfs(X[i], Y[i])) {
change = true;
break;
}
}
}
} int main() {
int T = get_int();
int x, y;
for (int t = ; t <= T; t++) {
N = get_int();
M = get_int();
memset(graph, , sizeof(graph));
for (int i = ; i <= N + ; i++) {
graph[i][] = -;
graph[i][M + ] = -;
}
for (int j = ; j <= M; j++) {
graph[][j] = -;
graph[N + ][j] = -;
}
cnt = get_int();
for (int i = ; i < cnt; i++) {
x = X[i] = get_int();
y = Y[i] = get_int();
graph[x][y] = ;
}
work();
int ans = ;
for (int i = ; i <= N; i++) {
for (int j = ; j <= M; j++) {
if (graph[i][j] == ) {
ans++;
}
}
}
printf("Case #%d:\n%d\n", t, ans);
}
return ;
}
hdu 5254 水题的更多相关文章
- HDU-1042-N!(Java大法好 && HDU大数水题)
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...
- HDU 5391 水题。
E - 5 Time Limit:1500MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- hdu 1544 水题
水题 /* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #i ...
- HDU排序水题
1040水题; These days, I am thinking about a question, how can I get a problem as easy as A+B? It is fa ...
- hdu 2710 水题
题意:判断一些数里有最大因子的数 水题,省赛即将临近,高效的代码风格需要养成,为了简化代码,以后可能会更多的使用宏定义,但是通常也只是快速拿下第一道水题,涨自信.大部分的代码还是普通的形式,实际上能简 ...
- Dijkstra算法---HDU 2544 水题(模板)
/* 对于只会弗洛伊德的我,迪杰斯特拉有点不是很理解,后来发现这主要用于单源最短路,稍稍明白了点,不过还是很菜,这里只是用了邻接矩阵 套模板,对于邻接表暂时还,,,没做题,后续再更新.现将这题贴上,应 ...
- hdu 5162(水题)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5162 题解:看了半天以为测试用例写错了.这题玩文字游戏.它问的是当前第i名是原数组中的第几个. #i ...
- hdu 3357 水题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3357 #include <cstdio> #include <cmath> # ...
- hdu 5038 水题 可是题意坑
http://acm.hdu.edu.cn/showproblem.php?pid=5038 就是求个众数 这个范围小 所以一个数组存是否存在的状态即可了 可是这句话真恶心 If not all ...
随机推荐
- 开放api设计资料收藏
REST设计 api设计范例http://www.ibm.com/developerworks/cn/web/1103_chenyan_restapi/index.html?ca=drs http:/ ...
- javascript QUnit 单元测试
<!doctype html> <html> <head lang="zh-CN" dir="ltr"> <meta ...
- HDU 4620 Fruit Ninja Extreme 搜索
搜索+最优性剪枝. DFS的下一层起点应为当前选择的 i 的下一个,即DFS(i + 1)而不是DFS( cur + 1 ),cur+1代表当前起点的下一个.没想清楚,TLE到死…… #include ...
- hbase 学习笔记二----shell
Hbase 是一个分布式的.面向列的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统. Hbase不同于一般的关系型数据库 ...
- javascript 一个关于时间排序的算法(一个页面多个倒计时排序)
上周要做一个活动页面 秒杀列表页 需要一个时间的算法排序 自己琢磨了半天想了各种算法也没搞出来,后来问了下一个后台的php同学 他写了个算法给我看了下 ,刚开始看的时候觉得这就是个纯算法,不能转化成页 ...
- php注册登录系统(一)-极简
序 登录注册系统是日常上网最普通的操作,我设了一个分类一步步完善注册登录系统,若有哪里错误请慧教 所用语言:php 数据库 :mysql 本次实现功能: 1.用户注册 2.用户登录 主要文件: 完整代 ...
- 大数据工具——Splunk
Splunk是机器数据的引擎.使用 Splunk 可收集.索引和利用所有应用程序.服务器和设备(物理.虚拟和云中)生成的快速移动型计算机数据 .从一个位置搜索并分析所有实时和历史数据. 使用 Splu ...
- VS2008下使用 CMFCPropertyGridCtrl 转载
http://blog.csdn.net/sunnyloves/article/details/5655575 在DLG中的基本应用 . 首先在Cxxdlg.h文件中加入 public: CMFCPr ...
- Oracle数据库之一
数据库(oracle) SQL --结构化查询语言,所有数据库基本通用 数据库是数据的仓库,用于存储数据. 内存.文件和数据库区别 内存中的数据是非持久的,关机之后就会消失. 文件和数据库中的数据都是 ...
- 基于UltraVNC实现客户端远程控制
前言 一般远程就直接用windows自带的,配置好动态IP花生壳,在任何地方都可以连回机子.最近项目里遇到这么个情况,需要快速接入远程控制功能,客户机的IP每次都会变,并且都是在外网,这样,就必须使用 ...