hdu 5254(暴力)

题解:暴力所有点,直到不存在可以0变1的点。

#include <stdio.h>
#include <string.h>
const int N = 505;
int n, m, k, g[N][N], temp[N][N], vis[N][N];

bool judge(int x, int y) {
    if (x - 1 >= 0 && y - 1 >= 0) {
        if (temp[x - 1][y] && temp[x][y - 1])
            return true;
    }
    if (x - 1 >= 0 && y + 1 < m) {
        if (temp[x - 1][y] && temp[x][y + 1])
            return true;
    }
    if (x + 1 < n && y - 1 >= 0) {
        if (temp[x + 1][y] && temp[x][y - 1])
            return true;
    }
    if (x + 1 < n && y + 1 < m) {
        if (temp[x + 1][y] && temp[x][y + 1])
            return true;
    }
    return false;
}

int main() {
    int t, cas = 1;
    scanf("%d", &t);
    while (t--) {
        memset(g, 0, sizeof(g));
        memset(vis, 0, sizeof(vis));
        scanf("%d%d%d", &n, &m, &k);
        int num = 0, x, y;
        for (int i = 0; i < k; i++) {
            scanf("%d%d", &x, &y);
            if (!g[x - 1][y - 1]) {
                g[x - 1][y - 1] = 1;
                num++;
            }
        }
        int res = 0;
        while (1) {
            int flag = 0;
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    temp[i][j] = g[i][j];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++) {
                    if (temp[i][j] == 0 && judge(i, j)) {
                        g[i][j] = 1;
                        flag++;
                    }
                }
            if (flag)
                res += flag;
            else
                break;
        }
        printf("Case #%d:\n%d\n", cas++, res + num);
    }
    return 0;
}
时间: 2024-10-18 17:48:28

hdu 5254(暴力)的相关文章

hdu 4876 暴力剪枝

hdu 4876 终于过了, 之前写的代码虽然思路是这样的但是有好多可以优化的地方没有注意所以一直超时超时超时!,学习了一下别人的代码,虽然看上去没什么差别但实际上却可以节省很多时间,恩恩又学到了一些技巧~     ^_^ . [题意]:给定一些卡片,每个卡片上有数字,现在选k个卡片,绕成一个环,每次可以再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个L,问能组成[L,R]所有数字的情况下,R的最大值是多少. [思路]:暴力+剪枝  枚举在m个数里选k个数的 C(m,k)种情况,

HDU 5386 暴力

给出初始矩阵和目标矩阵,存在m中操作,可以分别把每行或者每列都涂成同一种颜色,数据保证有解 因为保证有解,所以初始矩阵完全没有用... 暴力寻找M次操作,若目标矩阵的行或列全和该操作的颜色一样,则最后进行此操作,并把所有涂的点涂为颜色0(可当任意颜色) 然后同样依次推出之前的操作,因为之后的操作会覆盖掉之前操作的点. #include "stdio.h" #include "string.h" struct Mark { int x,y; char op; }mar

hdu 5254 水题

纯暴力就能过的,可是题目描述真心不清楚,我看了好久好久才明白题目啥意思. 为了迅速打完,代码比较冗余. /* * Author : ben */ #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <iostream> #include <algorithm> #include

hdu 2616 暴力使用 dfs求最短路径(剪枝有点依稀)

Kill the monster Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1241    Accepted Submission(s): 846 Problem Description There is a mountain near yifenfei’s hometown. On the mountain lived a big

BestCoder Round #60/HDU 5505 暴力数学

GT and numbers 问题描述 给出两个数NN和MM. NN每次可以乘上一个自己的因数变成新的NN. 求最初的NN到MM至少需要几步. 如果永远也到不了输出-1−1. 输入描述 第一行读入一个数TT表示数据组数. 接下来TT行,每行两个数NN和MM. T\leq1000T≤1000, 1\leq N \leq 10000001≤N≤1000000,1 \leq M \leq 2^{63}1≤M≤2?63??. 注意M的范围.hack时建议输出最后一行的行末回车;每一行的结尾不要输出空格.

hdu 5067(暴力搜索)

Harry And Dig Machine Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 852    Accepted Submission(s): 348 Problem Description As we all know, Harry Porter learns magic at Hogwarts School. However

hdu 6052(暴力枚举 容斥)

思路来自 http://blog.csdn.net/u014258433/article/details/76223343 我是用滑动窗口实现的. 代码: #include <cstdio> #include <cstring> #include <cmath> #include <iostream> using namespace std; const int maxn = 100; const long long mod = 1000000007; in

HDU 3687 暴力

在N*M的矩阵里,分布了,N*N个人,每行N个,且只能左右移动,求把所有人合并成N*N正方形所需的最小代价. 因为每个人只能在本行移动,所以预处理出来每行的每种合并方式,再判断列的 #include "stdio.h" #include "string.h" #include "iostream" #include "algorithm" using namespace std; int inf=0x3f3f3f3f; int

HDU 5547 暴力

Sudoku Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 1064    Accepted Submission(s): 362 Problem Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny game hi