求求你们了救救孩子吧(水题求条&玄一关&急&违规紫杉
  • 板块灌水区
  • 楼主BK小鹿
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/29 22:13
  • 上次更新2024/8/30 10:51:04
查看原帖
求求你们了救救孩子吧(水题求条&玄一关&急&违规紫杉
1345783
BK小鹿楼主2024/8/29 22:13

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;
}
2024/8/29 22:13
加载中...