rt,今天考场上简单模拟题,但我就是没写对,样例都不过,我也不知道是我读错题还是哪错了,求求大佬们看看吧。
题目:




#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int N = 15;
int n, m;
int g[N][N];
int res, sc;
int main()
{
// freopen("game.in", "r", stdin);
// freopen("game.out", "w", stdout);
scanf("%d%d", &n, &m);
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
g[x][y] = z;
scanf("%d%d%d", &x, &y, &z);
g[x][y] = z;
bool al = 0, ju;
while (m -- )
{
ju = 0;
if (al) break;
int d, k, v;
scanf("%d%d%d", &d, &k, &v);
if (d == 0)
{
for (int i = n; i >= 2; i -- )
for (int j = 1; j <= n; j ++ )
{
if (!g[i - 1][j]) swap(g[i - 1][j], g[i][j]), ju = 1;
if (g[i][j] == g[i - 1][j]) g[i - 1][j] += g[i][j], g[i][j] = 0, ju = 1, sc += g[i - 1][j];
}
int r = 0;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
r ++ ;
int lmao = (1 + k % r), cnt = 0;
bool fl = 1;
for (int i = 1; i <= n && fl; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
{
cnt ++ ;
if (cnt == lmao)
{
g[i][j] = v;
fl = 0;
break;
}
}
if (ju && !fl) res ++ ;
if (!ju || fl) al = 1;
}
if (d == 1)
{
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
{
if (!g[i + 1][j]) swap(g[i + 1][j], g[i][j]), ju = 1;
if (g[i + 1][j] == g[i][j]) g[i + 1][j] += g[i][j], g[i][j] = 0, ju = 1, sc += g[i + 1][j];
}
int r = 0;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
r ++ ;
int lmao = (1 + k % r), cnt = 0;
bool fl = 1;
for (int i = 1; i <= n && fl; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
{
cnt ++ ;
if (cnt == lmao)
{
g[i][j] = v;
fl = 0;
break;
}
}
if (ju && !fl) res ++ ;
if (!ju || fl) al = 1;
}
if (d == 2)
{
for (int i = 1; i <= n; i ++ )
for (int j = n; j >= 2; j -- )
{
if (g[i][j - 1]) swap(g[i][j - 1], g[i][j]), ju = 1;
if (g[i][j] == g[i][j - 1]) g[i][j - 1] += g[i][j], g[i][j] = 0, ju = 1, sc += g[i][j - 1];
}
int r = 0;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
r ++ ;
int lmao = (1 + k % r), cnt = 0;
bool fl = 1;
for (int i = 1; i <= n && fl; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
{
cnt ++ ;
if (cnt == lmao)
{
g[i][j] = v;
fl = 0;
break;
}
}
if (ju && !fl) res ++ ;
if (!ju || fl) al = 1;
}
if (d == 3)
{
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
{
if (!g[i][j + 1]) swap(g[i][j + 1], g[i][j]), ju = 1;
if (g[i][j] == g[i][j + 1]) g[i][j + 1] += g[i][j], g[i][j] = 0, ju = 1, sc += g[i][j + 1];
}
int r = 0;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
r ++ ;
int lmao = (1 + k % r), cnt = 0;
bool fl = 1;
for (int i = 1; i <= n && fl; i ++ )
for (int j = 1; j <= n; j ++ )
if (!g[i][j])
{
cnt ++ ;
if (cnt == lmao)
{
g[i][j] = v;
fl = 0;
break;
}
}
if (ju && !fl) res ++ ;
if (!ju || fl) al = 1;
}
}
printf("%d\n%d", res, sc);
return 0;
}