关于编译器的问题
  • 板块学术版
  • 楼主happybob
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/9 16:38
  • 上次更新2023/10/27 16:16:27
查看原帖
关于编译器的问题
332914
happybob楼主2022/8/9 16:38

void add(int a, int b, int c, int x)
	{
		for (a; a < M; a += lowbit(a))
		{
			for (b; b < M; b += lowbit(b))
			{
				for (c; c < M; c += lowbit(c))
				{
					tr[a][b][c] += x;
				}
			}
		}
	}
	int qry(int a, int b, int c)
	{
		a = min(a, M - 1);
		b = min(b, M - 1);
		c = min(c, M - 1);
		int ret = 0;
		for (; a; a -= lowbit(a))
		{
			for (; b; b -= lowbit(b))
			{
				for (; c; c -= lowbit(c))
				{
					ret += tr[a][b][c];
				}
			}
		}
		return ret;
	}

void add(int a, int B, int c, int x)
	{
		for (int i = a; i < M; i += i & -i)
		{
			for (int j = B; j < M; j += j & -j)
			{
				for (int k = c; k < M; k += k & -k)
				{
					tr[i][j][k] += x;
				}
			}
		}
	}
	int qry(int a, int B, int c)
	{
		a = min(a, M - 1);
		B = min(B, M - 1);
		c = min(c, M - 1);
		int ret = 0;
		for (int i = a; i; i -= lowbit(i))
		{
			for (int j = B; j ; j -= lowbit(j))
			{
				for (int k = c; k; k -= lowbit(k))
				{
					ret += tr[i][j][k];
				}
			}
		}
		return ret;
	}

但是第一份代码全 WA,第二份却是对的,这是什么原因?

2022/8/9 16:38
加载中...