• [暴力]JZOJ 5886 军训


    Description

    小L正在参加学校组织的军训。军训的操场是一个n*m的网格,每个网格开始时都没有人。每次军官会指定某些行和列,并在这些行和列的每个交界处都安排站上一名学生。但为了防止两名学生站到同一个网格中,军官每次指定的行和列并不会和之前指定过的重复。军官接到了上级的要求,需要将学生摆成特定的图案,那么军官能否达成要求呢?
     

    Input

    第一行一个整数T,表示数据组数。
    接下来每个数据第一行两个整数n,m,意义如题面所述。
    接下来n行,每行一个长度为n的字符串,其中第j个字符是’#’则代表i行j列的网格上要有学生,如果是’.’则代表没有。

    Output

    对于每组数据一行一个字符串“Yes”或者”No”,表示能否达到要求。
     

    Sample Input

    1
    5 8
    .#.#..#.
    .....#..
    .#.#..#.
    #.#....#
    .....#..

    Sample Output

    Yes
     

    Data Constraint

    分析

    这题显然任意一个矩形的三个角都有#号而另外一个没有就不可行

    我们定义left[i][j]为(i,j)往左第一个为#号的列,up[i][j]类似

    然后像邻接表一样乱搞一下就好

    #include <iostream>
    #include <cstdio>
    #include <memory.h>
    using namespace std;
    const int N=2e3+10;
    int t,n,m;
    int l[N][N],u[N][N];
    bool b[N],p[N],q[N];
    char c[N][N];
    
    int main() {
        freopen("rect.in","r",stdin);
        freopen("rect.out","w",stdout);
        scanf("%d",&t);
        while (t--) {
            memset(b,0,sizeof b);
            memset(p,0,sizeof p);
            memset(l,0,sizeof l);
            memset(u,0,sizeof u);
            int i;
            scanf("%d%d",&n,&m);
            for (i=1;i<=n;i++)
                for (int j=1;j<=m;j++) {
                    do {
                        scanf("%c",&c[i][j]);
                    }
                    while (c[i][j]!='.'&&c[i][j]!='#');
                    if (c[i][j]=='#') b[i]=1;
                    if (c[i][j-1]=='#') l[i][j]=j-1; else l[i][j]=l[i][j-1];
                    if (c[i-1][j]=='#') u[i][j]=i-1; else u[i][j]=u[i-1][j];
                }
            for (i=1;i<=n;i++)
            if (b[i]) {
                int y=c[i][m]=='#'?m:l[i][m];
                int x=u[i][y];
                for (int j=l[i][y];j;j=l[i][j]) {
                    if (u[i][j]!=x) goto print;
                }
            }
            print:;
            if (i==n+1) printf("Yes
    "); else printf("No
    ");
        }
        fclose(stdin);fclose(stdout);
    }
    View Code
    在日渐沉没的世界里,我发现了你。
  • 相关阅读:
    javascript 判断电话号码的格式
    JavaScript 'Pig latin is cool'==>'igPay atinlay siay oolcay'
    JavaScript 找出特殊数字如135 = 1^1 + 3^2 + 5^3
    nginx+Apache实现动静分离
    MYSQL数据库的主从复制
    Connection could not be established with host smtp.163.com [Connection timed out #110]
    Yii2 的 redis 应用
    Yii2 模块名、控制器名、方法名
    讯搜
    支付宝异步通知时间点分布
  • 原文地址:https://www.cnblogs.com/mastervan/p/9787825.html
Copyright © 2020-2023  润新知