1

我正在尝试这个问题:http ://www.spoj.com/problems/ANDROUND

我的算法由 32 行和 N 列的 2D 数组组成(32 是因为在 31 轮之后,数组不会改变)。然后,它通过取上一行(列保持不变)及其邻居中的值的 AND 来计算 2D 数组中的每个字段。我检查了几乎所有类型的输入并得到了所需的输出。但仍然得到WA。这是我的代码。如果有人可以指出错误或给出我的程序失败的测试用例。

#include <cstdio>
#include <cstring>
using namespace std;

static long A[33][20002], N, T, K;

int main()
{
    scanf("%ld", &T);
    while(T--){
        memset(A, 0, sizeof A);
        scanf("%ld %ld", &N, &K); K=(K>31)? 31:K;                       \\Setting K=31 if K>31
        for(int i=1; i<=N; ++i) scanf("%ld", &A[0][i]);
        A[0][0]=A[0][N]; A[0][N+1]=A[0][1];                                \\first row is the input array

        for(int i=1; i<=K; ++i){
            for(int j=1; j<=N; ++j)
                A[i][j]= (A[i-1][j]&A[i-1][j-1]) & A[i-1][j+1];  \\taking AND of previous element in column and its neighbors.

            A[i][0]=A[i][N]; A[i][N+1]=A[i][1];           \\for making array cyclic.
        }
        for (int i=1; i<=N; ++i) printf("%ld ", A[K][i]);                     \\Printing the array after required rounds.
        printf("\n");
    }
    return 0;
}

谢谢你。

4

2 回答 2

4

因为在 31 轮之后,数组没有改变

是什么让你相信?

R回合后,索引i处的元素仅受元素影响

A[i-R] ... A[i+R]

(用适当的包装 ifi <= RN < i+R)。

所以只能保证数组在N/2回合后保持不变。

于 2013-05-02T00:16:52.947 回答
0

试试这个测试用例。

1 500 1000000000 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6

于 2017-12-15T14:18:59.450 回答