QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#869058 | #9965. Game MPO | anahartmann | WA | 1ms | 3840kb | C++14 | 4.4kb | 2025-01-24 22:32:07 | 2025-01-24 22:32:09 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
struct a
{
int pt = 0;
int i;
int j;
};
typedef struct a a;
struct comp
{
bool operator()(a const &b, a const &c)
{
return b.pt < c.pt;
}
};
vector<int> x = {0, 1, -1, 0, 1, 1, -1, -1};
vector<int> y = {1, 0, 0, -1, 1, -1, 1, -1};
int n;
vector<string> v(100);
vector<vector<int>> v2(100, vector<int>(100));
priority_queue<a, vector<a>, comp> pq;
int f(int i, int j, char m)
{
int c = 0;
for (int k = 0; k < 8; k++)
{
if (i + x[k] >= 0 && i + x[k] < n && j + y[k] >= 0 && j + y[k] < n && v[i + x[k]][j + y[k]] == m)
{
c++;
}
}
return c;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int pti = 0, pt = 0, p = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> v[i];
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
v2[i][j] = 0;
if (v[i][j] == 'p')
{
v2[i][j] += f(i, j, 'M');
}
else if (v[i][j] == 'm')
{
v2[i][j] += f(i, j, 'P');
}
else if (v[i][j] == 'o')
{
v2[i][j] += f(i, j, 'O');
}
else if (v[i][j] == 'P')
{
pti += f(i, j, 'M');
p++;
}
else if (v[i][j] == 'M')
{
pti += f(i, j, 'P');
p++;
}
else if (v[i][j] == 'O')
{
pti += f(i, j, 'O');
p++;
}
// cout << pti << " " << p << endl;
a b;
b.pt = v2[i][j];
b.i = i;
b.j = j;
pq.push(b);
}
}
pti = (pti / 2) + p;
for (int l = 0; l < n * n; l++)
{
int i = pq.top().i;
int j = pq.top().j;
/* cout << i << " " << j << " " << v2[i][j] << "\n"; */
pq.pop();
if (v2[i][j] > 0)
{
if (v[i][j] == 'p')
{
v[i][j] = 'P';
pt += v2[i][j] + 1;
for (int k = 0; k < 8; k++)
{
if (i + x[k] >= 0 && i + x[k] < n && j + y[k] >= 0 && j + y[k] < n && v[i + x[k]][j + y[k]] == 'm')
{
v2[i + x[k]][j + y[k]]++;
a b;
b.pt = v2[i + x[k]][j + y[k]];
b.i = i + x[k];
b.j = j + y[k];
pq.push(b);
}
}
}
if (v[i][j] == 'm')
{
v[i][j] = 'M';
pt += v2[i][j] + 1;
for (int k = 0; k < 8; k++)
{
if (i + x[k] >= 0 && i + x[k] < n && j + y[k] >= 0 && j + y[k] < n && v[i + x[k]][j + y[k]] == 'p')
{
v2[i + x[k]][j + y[k]]++;
a b;
b.pt = v2[i + x[k]][j + y[k]];
b.i = i + x[k];
b.j = j + y[k];
pq.push(b);
}
}
}
if (v[i][j] == 'o')
{
v[i][j] = 'O';
pt += v2[i][j] + 1;
for (int k = 0; k < 8; k++)
{
if (i + x[k] >= 0 && i + x[k] < n && j + y[k] >= 0 && j + y[k] < n && v[i + x[k]][j + y[k]] == 'o')
{
v2[i + x[k]][j + y[k]]++;
a b;
b.pt = v2[i + x[k]][j + y[k]];
b.i = i + x[k];
b.j = j + y[k];
pq.push(b);
}
}
}
}
else
{
break;
}
}
cout << pti << " " << pt + pti << endl;
for (int i = 0; i < n; i++)
{
cout << v[i] << "\n";
}
/* for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << v2[i][j];
}
cout << "\n";
} */
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3584kb
input:
4 .pm. Mom. OOm. p..p
output:
4 13 .PM. MOM. OOm. p..p
result:
ok 5 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3456kb
input:
2 .P P.
output:
2 2 .P P.
result:
ok 3 lines
Test #3:
score: 0
Accepted
time: 1ms
memory: 3840kb
input:
3 ... .pp .m.
output:
0 0 ... .pp .m.
result:
ok 4 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
4 .... .... .... ....
output:
0 0 .... .... .... ....
result:
ok 5 lines
Test #5:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
5 m.... m.Mop OOpoo PMp.. Oo...
output:
8 15 m.... m.Mop OOPoo PMP.. OO...
result:
ok 6 lines
Test #6:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
6 Mo..Op ..P.p. p.MopP mMpO.P ..mp.p OM.Mo.
output:
12 26 Mo..Op ..P.p. P.MOpP MMPO.P ..MP.p OM.Mo.
result:
ok 7 lines
Test #7:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
7 .M.O.M. .PM...M MO.MMP. O.O.P.P POOOOM. MO...MP ..MOP.O
output:
53 53 .M.O.M. .PM...M MO.MMP. O.O.P.P POOOOM. MO...MP ..MOP.O
result:
ok 8 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
8 m.mm..p. .oo.op.p .op.pm.. ...p.pmp .o.ooo.. m.momo.o omp.pmmo mp.mmo..
output:
0 0 m.mm..p. .oo.op.p .op.pm.. ...p.pmp .o.ooo.. m.momo.o omp.pmmo mp.mmo..
result:
ok 9 lines
Test #9:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
9 pp...p.pP ...PmOM.o .MOM.M.Mm O.op.pppP Oo..opMp. .pPM..p.p .m.M.o.m. pPP.PO.O. mopMooom.
output:
31 93 pp...P.PP ...PMOM.o .MOM.M.MM O.OP.PPPP OO..oPMP. .PPM..P.P .M.M.O.M. PPP.PO.O. MoPMOOOm.
result:
ok 10 lines
Test #10:
score: 0
Accepted
time: 1ms
memory: 3840kb
input:
10 M.oMppo..p Pp...pmMp. o..mp.P.m. OMm..M..M. OPPmM.o.M. .pO..mOm.p O..o..P.m. .m..OOp.m. p..Oomm... .p.oMpmmp.
output:
30 86 M.oMPPo..p PP...PMMP. O..MP.P.M. OMM..M..M. OPPMM.O.M. .pO..MOM.P O..O..P.M. .m..OOP.m. p..OOMM... .p.OMPMmp.
result:
ok 11 lines
Test #11:
score: 0
Accepted
time: 0ms
memory: 3712kb
input:
10 P.o.OoP... Mpm.PmPpMm p.....O..M MpOM..Ompp .m.Oo.pM.P ....mOmmPo Ppoo.mm... ..OM.o.P.p OPO....M.P P.ooo.mP.p
output:
36 89 P.o.OOP... MPM.PMPPMm P.....O..M MPOM..OMPP .M.OO.PM.P ....mOMMPo PpOO.mM... ..OM.o.P.p OPO....M.P P.OOO.MP.p
result:
ok 11 lines
Test #12:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
10 .m..Oooomo .......... MOMoomp.Pp .......... mMP..omOoM .........O mmOmoOm.PM m......... PmM.O.Mpp. .........o
output:
20 37 .m..OOOOmo .......... MOMoomp.Pp .......... mMP..omOOM .........O mmOmOOm.PM M......... PMM.O.MPp. .........o
result:
ok 11 lines
Test #13:
score: -100
Wrong Answer
time: 1ms
memory: 3712kb
input:
10 Oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo oooooooooo
output:
1 312 OOOOOOOOOo OOOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOo OOOOOOOOoo OOOOOOOOoo oOOOOOoooo ooOOOooooo oooooooooo
result:
wrong answer 1st lines differ - expected: '1 442', found: '1 312'