UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#211424#3803. 激光181126062311843315ms33464kbC++115.0kb2024-08-11 11:54:062024-08-11 13:13:14

answer

#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int read()
{
    int x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = (x << 1) + (x << 3) + ch - '0';
        ch = getchar();
    }
    return x * f;
}
int n, m, ans[4][1001][1001], k, x, y, xx, yy, res;
map<pair<int, int>, pair<int, int>> amns;
char c[1001][1001];
bool vis[61][61],viss[61][61];
void dfs(int x, int y, int fx)
{
    
    //cout << x << " " << y << " " << fx << ' ' << res << endl;
    if (x < 1 || x > n || y < 1 || y > m)
        return;
    if (c[x][y] == '#')
        return;
    if (c[x][y] == 'X')
    {
        if(viss[x][y])
            return;
        viss[x][y]=1;
        int dx = amns[{x, y}].first, dy = amns[{x, y}].second;
        res += 2;
        //cout<<dx<<' '<<dy<<endl;
        if (fx == 1)
            dfs(dx - 1, dy, 1);
        else if (fx == 2)
            dfs(dx + 1, dy, 2);
        else if (fx == 3)
            dfs(dx, dy - 1, 3);
        else if (fx == 4)
            dfs(dx, dy + 1, 4);
        // dfs(dx, dy, fx);
    }
    if (c[x][y] == '/')
    {
        res++;
        if (fx == 1)
            dfs(x, y + 1, 4);
        else if (fx == 2)
            dfs(x, y - 1, 3);
        else if (fx == 3)
            dfs(x + 1, y, 2);
        else if (fx == 4)
            dfs(x - 1, y, 1);
    }
    if (c[x][y] == '\\')
    {
        res++;
        if (fx == 1)
            dfs(x, y - 1, 3);
        else if (fx == 2)
            dfs(x, y + 1, 4);
        else if (fx == 3)
            dfs(x - 1, y, 1);
        else if (fx == 4)
            dfs(x + 1, y, 2);
    }
    if (c[x][y] == '.')
    {
        if (!vis[x][y])
            res++;
        vis[x][y]=true;
        if (fx == 1)
            dfs(x - 1, y, 1);
        else if (fx == 2)
            dfs(x + 1, y, 2);
        else if (fx == 3)
            dfs(x, y - 1, 3);
        else if (fx == 4)
            dfs(x, y + 1, 4);
    }
}
signed main()
{
    n = read(), m = read();
    for (int i = 1; i <= n; i++)
        scanf("%s", c[i] + 1);
    if (n <= 60 && m <= 60)
    {
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                if (c[i][j] == 'X')
                {
                    k++;
                }
            }
        }
        for (int i = 1; i <= k / 2; i++)
        {
            x = read(), y = read(), xx = read(), yy = read();
            amns[{x, y}] = {xx, yy};
            amns[{xx, yy}] = {x, y};
        }
        for (int k = 1; k <= 4; k++)
        {
            for (int i = 1; i <= n; i++)
            {
                for (int j = 1; j <= m; j++)
                {
                    if (c[i][j] == '.')
                    {
                        //printf("%lld %lld\n", i, j);
                        memset(vis, 0, sizeof(vis));
                        memset(viss, 0, sizeof(viss));
                        res = 0;
                        dfs(i, j, k);
                        printf("%lld ", res);
                    }
                    else
                    {
                        printf("-1 ");
                    }
                }
                puts("");
            }
        }
    }
    else
    {
        for (int i = 1; i <= n; i++)
        {
            for (int j = 1; j <= m; j++)
            {
                ans[0][i][j] = -1;
                ans[1][i][j] = -1;
                ans[2][i][j] = -1;
                ans[3][i][j] = -1;
                if (c[i][j] == '.')
                {
                    ans[0][i][j] = 0;
                    ans[1][i][j] = 0;
                    ans[2][i][j] = 0;
                    ans[3][i][j] = 0;
                    for (int k = i; k >= 1; k--)
                    {
                        if (c[k][j] == '#')
                            break;
                        ans[0][i][j]++;
                    }
                    for (int k = i; k <= n; k++)
                    {
                        if (c[k][j] == '#')
                            break;
                        ans[1][i][j]++;
                    }
                    for (int k = j; k >= 1; k--)
                    {
                        if (c[i][k] == '#')
                            break;
                        ans[2][i][j]++;
                    }
                    for (int k = j; k <= m; k++)
                    {
                        if (c[i][k] == '#')
                            break;
                        ans[3][i][j]++;
                    }
                }
            }
        }
        for (int i = 0; i <= 3; i++)
        {
            for (int j = 1; j <= n; j++)
            {
                for (int k = 1; k <= m; k++)
                    printf("%lld ", ans[i][j][k]);
                printf("\n");
            }
        }
    }
    return 0;
}

详细

小提示:点击横条可展开更详细的信息

Test #1:

score: 3
Accepted
time: 4ms
memory: 1252kb

input:

50 50
.......................#.........#................
..............................................

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 10000 tokens

Test #2:

score: 3
Accepted
time: 251ms
memory: 17332kb

input:

500 500
...............................................................................................

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 1000000 tokens

Test #3:

score: 3
Accepted
time: 349ms
memory: 33460kb

input:

1000 1000
#.....#..#...............#..#.##......#......#...........#....#....#.#.......#..........##...

output:

-1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1...

result:

ok 4000000 tokens

Test #4:

score: 3
Accepted
time: 1892ms
memory: 33144kb

input:

990 831
...............................................................................................

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 3290760 tokens

Test #5:

score: 3
Accepted
time: 2972ms
memory: 33460kb

input:

1000 1000
.............................................................................................

output:

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok 4000000 tokens

Test #6:

score: 0
Wrong Answer
time: 0ms
memory: 1240kb

input:

3 3
/X\
X.X
.X/
1 2 2 3
2 1 3 2

output:

-1 -1 -1 
-1 4 -1 
7 -1 -1 
-1 -1 -1 
-1 4 -1 
1 -1 -1 
-1 -1 -1 
-1 4 -1 
1 -1 -1 
-1 -1 -1 
-1 4 -...

result:

wrong answer 5th words differ - expected: '7', found: '4'

Test #7:

score: 0
Wrong Answer
time: 1ms
memory: 1244kb

input:

7 7
/X.X.X\
X\.\./X
.......
X\././X
.......
X\./.\X
\X.X.X/
1 2 7 2
1 4 7 4
1 6 7 6
2 1 2 7
4 1 4 7
...

output:

-1 -1 1 -1 1 -1 -1 
-1 -1 2 -1 2 -1 -1 
18 33 3 34 3 33 18 
-1 -1 4 -1 4 -1 -1 
18 33 5 35 5 33 18 
...

result:

wrong answer 16th words differ - expected: '27', found: '33'

Test #8:

score: 0
Wrong Answer
time: 0ms
memory: 1252kb

input:

9 10
#./....\..
..../.X..#
/.X..../..
./.\./....
..X../..#.
\/.\...\..
..X...\/..
.X....X..\
....X.....

output:

-1 1 -1 1 1 1 1 -1 1 1 
1 2 17 2 -1 2 -1 12 2 -1 
-1 3 -1 3 11 3 29 -1 3 1 
30 -1 22 -1 12 -1 29 4 4...

result:

wrong answer 27th words differ - expected: '28', found: '29'

Test #9:

score: 0
Memory Limit Exceeded

input:

50 50
.././.\.\\.\\.\/\\.//..\\..//\./////..\//..//\\...
\.....\..../\\/..\/././\.//.\\\.\\/\\\..\//...

output:


result:


Test #10:

score: 0
Wrong Answer
time: 28ms
memory: 1412kb

input:

60 60
X..XXX.../...XXX././X..\..X....XX.X.X./X....XXX....\XXX.X.X.
XX..XX.//..XX\.X...X.X...X.....X....

output:

-1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1...

result:

wrong answer 87th words differ - expected: '109', found: '82'

Test #11:

score: 0
Wrong Answer
time: 31ms
memory: 1492kb

input:

60 60
X..XXXX..X...XXX.X.XX..X..XXXXXXX.X.X.XXX.X.XXXX.X.XXXX.XXX.
XX..XX.XX..XXX.X...X.X.XXX..X..X....

output:

-1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1...

result:

wrong answer 81st words differ - expected: '149', found: '151'

Test #12:

score: 3
Accepted
time: 155ms
memory: 1712kb

input:

60 60
/..........................................................\
./..................................

output:

-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

ok 14400 tokens

Test #13:

score: 0
Wrong Answer
time: 76ms
memory: 1424kb

input:

60 55
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
X\.........XX....X.X...XX../\../...X.....

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 58th words differ - expected: '3216', found: '57'

Test #14:

score: 0
Memory Limit Exceeded

input:

60 60
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
X...\\XXX//../X/////...\..\.\/X.X...

output:


result:


Test #15:

score: 0
Memory Limit Exceeded

input:

60 60
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
X/..\\/..//.././////...\..\.\/......

output:


result:


Test #16:

score: 0
Wrong Answer
time: 2028ms
memory: 33460kb

input:

1000 899
........X...X..X...X.X.....X.....X...............X.XX.X.X............X..X.X.X..X..............

output:

1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

wrong answer 908th words differ - expected: '239', found: '2'

Test #17:

score: 0
Wrong Answer
time: 1768ms
memory: 33460kb

input:

1000 1000
X.....XXXX.X...X.........X..X.XX...X.XX......X........X..X....X....X.X.......X.......X..XX...

output:

-1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 ...

result:

wrong answer 1007th words differ - expected: '1301', found: '2'

Test #18:

score: 0
Wrong Answer
time: 805ms
memory: 33460kb

input:

1000 1000
XXX...XXXXXXXXXXXXXX.XXXXXXXXXXXXXXX.XXX.X.XXXXXX.XX..X.XXXXXXXXXXXXXXXXXXXXXX.XXXXX.XXXXX...

output:

-1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1011th words differ - expected: '2203', found: '2'

Test #19:

score: 0
Wrong Answer
time: 2803ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '420525', found: '2'

Test #20:

score: 0
Wrong Answer
time: 2805ms
memory: 33460kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '1000', found: '2'

Test #21:

score: 0
Wrong Answer
time: 2071ms
memory: 33460kb

input:

1000 1000
...../\..../.\......//././/./\\./../..\/.......\\.\.....\\\\//.\.../.\....\...\../././../\...

output:

1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 ...

result:

wrong answer 1006th words differ - expected: '9', found: '2'

Test #22:

score: 0
Wrong Answer
time: 2012ms
memory: 33460kb

input:

1000 1000
......\...................../................................................................

output:

1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

wrong answer 1007th words differ - expected: '8', found: '2'

Test #23:

score: 0
Wrong Answer
time: 2821ms
memory: 33460kb

input:

1000 1000
/............................................................................................

output:

-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

wrong answer 1001st words differ - expected: '999002', found: '2'

Test #24:

score: 0
Wrong Answer
time: 1784ms
memory: 23800kb

input:

700 1000
/.............................................................................................

output:

-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

result:

wrong answer 1001st words differ - expected: '489302', found: '2'

Test #25:

score: 0
Wrong Answer
time: 400ms
memory: 33460kb

input:

1000 1000
#.....#\/................\..#\#\\/...../.....#..\........#.\..#\...\.\........\/../../...\...

output:

-1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 ...

result:

wrong answer 1009th words differ - expected: '25', found: '2'

Test #26:

score: 0
Wrong Answer
time: 657ms
memory: 33464kb

input:

1000 1000
.........X.\........\.......#..X............/#....\........./.............X.......X..........

output:

1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1...

result:

wrong answer 1010th words differ - expected: '62', found: '2'

Test #27:

score: 0
Wrong Answer
time: 1959ms
memory: 33464kb

input:

1000 1000
...../\\./.X.......X/..../../\.../.X..\X..........\...\..\.X/XX..../.X.....\...X...../XX.....

output:

1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 ...

result:

wrong answer 1006th words differ - expected: '203', found: '2'

Test #28:

score: 0
Wrong Answer
time: 3258ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '964933', found: '2'

Test #29:

score: 0
Wrong Answer
time: 2837ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '1000', found: '2'

Test #30:

score: 0
Wrong Answer
time: 2782ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '886109', found: '2'

Test #31:

score: 0
Wrong Answer
time: 2719ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1002nd words differ - expected: '547503', found: '2'

Test #32:

score: 0
Wrong Answer
time: 1399ms
memory: 33464kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1010th words differ - expected: '831504', found: '2'

Test #33:

score: 0
Wrong Answer
time: 804ms
memory: 33460kb

input:

1000 1000
\.XXX/\X..X\XXXX.XXXXX.X.X.X/X.\XX.XX.\XXX.XXXXX\X\.XX.XX\XX/X.X.XXXXXXXXXXX.X\XXXXXXXXX/....

output:

-1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -...

result:

wrong answer 1005th words differ - expected: '425', found: '2'

Test #34:

score: 0
Wrong Answer
time: 975ms
memory: 33460kb

input:

1000 1000
X..XXXXX.XXXXXXX.XXXXX.X.X.XXXXXXX.XX.XXXX.XXX.XXXXX.X.XXXXXXX.X.XXXXXXX..XX.XXXXXXXXXXX.....

output:

-1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 ...

result:

wrong answer 1006th words differ - expected: '835', found: '2'

Test #35:

score: 0
Wrong Answer
time: 869ms
memory: 33460kb

input:

1000 1000
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...

output:

1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1...

result:

wrong answer 1003rd words differ - expected: '999506', found: '2'