HDU 5386 暴力

给出初始矩阵和目标矩阵,存在m中操作,可以分别把每行或者每列都涂成同一种颜色,数据保证有解

因为保证有解,所以初始矩阵完全没有用。。。

暴力寻找M次操作,若目标矩阵的行或列全和该操作的颜色一样,则最后进行此操作,并把所有涂的点涂为颜色0(可当任意颜色)

然后同样依次推出之前的操作,因为之后的操作会覆盖掉之前操作的点。

#include "stdio.h"
#include "string.h"
struct Mark
{
    int x,y;
    char op;
}mark[510];
int a[110][110],ans[510];
int main()
{
    int t,n,m,i,cnt,j,k;
    char str[2];
    scanf("%d",&t);
    while (t--)
    {
        scanf("%d%d",&n,&m);
        for (i=1;i<=n;i++)
            for (j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        for (i=1;i<=n;i++)
            for (j=1;j<=n;j++)
            scanf("%d",&a[i][j]);
        for (i=1;i<=m;i++)
        {
            scanf("%s%d%d",str,&mark[i].x,&mark[i].y);
            mark[i].op=str[0];
        }

        cnt=m;
        while (cnt!=0)
        {
            for (i=1;i<=m;i++)
                if (mark[i].x!=0)
                {
                    k=mark[i].x;
                    if (mark[i].op=='H')
                    {
                        for (j=1;j<=n;j++)
                            if (a[k][j]!=0 && a[k][j]!=mark[i].y) break;
                        if (j==n+1)
                        {
                            for (j=1;j<=n;j++)
                                a[k][j]=0;
                            mark[i].x=0;
                            ans[cnt--]=i;
                        }
                    }
                    else
                    {
                        for (j=1;j<=n;j++)
                            if (a[j][k]!=0 && a[j][k]!=mark[i].y) break;
                        if (j==n+1)
                        {
                            for (j=1;j<=n;j++)
                                a[j][k]=0;
                            mark[i].x=0;
                            ans[cnt--]=i;
                        }
                    }
                }
        }
        for (i=1;i<=m;i++)
            printf("%d ",ans[i]);
        printf("\n");
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 22:49:58

HDU 5386 暴力的相关文章

hdu 4876 暴力剪枝

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

HDU 5386 Cover (MUT #8 模拟暴力)

[题目链接]:click here~~ [题意]: 操作L x y,把当前x,这一列全部置为y 操作H x y,把当前,这一行全部置为y. 现在给你n?n的初始矩阵,以及n?n的目标矩阵 现在给你m种操作(由以上两种操作构成),问怎么排序这m种操作,才能使得,初始矩阵,经由排序后的操作,构成目标矩阵. 输出排序方案. 也就是给出初始矩阵和目标矩阵,存在m中操作,可以分别把每行或者每列都涂成同一种颜色,数据保证有解,因为保证有解,(然而初始矩阵并没有什么卵用...) [思路]: 暴力寻找M次操作,

hdu 5386 Cover(暴力求解+想法题)

题意: 有两种操作: 操作L x y,把当前x,这一列全部置为y 操作H x y,把当前,这一行全部置为y. 现在给你n?n的初始矩阵,以及n?n的目标矩阵 现在给你m种操作(由以上两种操作构成),问怎么排序这m种操作,才能使得,初始矩阵,经由排序后的操作,构成目标矩阵. 输出排序方案. 解析: 逆向思维, 枚举每个操作,然后判断该操作是不是最后一个操作.(就像撕胶布一样,一条一条的剥离) 判断是否是最后一个操作方法就是: 除去已经用过的点,如果一排都等于当前操作的颜色,那就是最后一个操作.然后

HDU 5386 Cover

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5386 题目大意:给一个初始矩阵(n×n).一个目标矩阵(n×n)和m个操作,要求找到一种操作顺序,使初始矩阵变成目标矩阵.操作共有两种,如下: L x y: 把当前矩阵第x列的数全变为y H x y: 把当前矩阵第x行的数全变为y 输入格式:先输入case数T,每个case第一行是两个整数n和m,接下来n行输入初始矩阵,再下来n行输入目标矩阵.最后m行输入操作. 1≤color[i][j]≤n,co

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]

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 5386 Cover(模拟)

Cover Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 966    Accepted Submission(s): 320 Special Judge Problem Description You have an n?n matrix.Every grid has a color.Now there are two types

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