从Codechef March Long比赛获得ANUGCD的WA

时间:2014-03-18 13:57:57

标签: c++ testcase sieve rmq

我正在 Codechef March Long Contest 的问题 GCD条件中获得WA。 请告诉我我做错了什么或者代码产生错误答案的测试用例。

Link for the Question

我已经为每个素数使用了RMQ(范围最大查询)

for(i=0;i<limit;i++)
{
    int sz=b[i].size();
    if(!sz)continue;
    int level=0;
    cc[i].resize(sz);
    for(j=0;j<sz;j++)cc[i][j].push_back(b[i][j]);//level 0
    for(level=1;(1<<level)<=sz;level++)
    {
        for(j=0;j+(1<<level)<=sz;j++)
        {
            int c1=cc[i][j][level-1];
            int c2=cc[i][j+(1<<(level-1))][level-1];
            int mx=(a[c1]<a[c2])?c2:c1;
            cc[i][j].push_back(mx);
        }
    }
}

首先,我已经转换为如下结构: -

输入示例: - 10 6 20 15 8

(b [i] - &gt;存储因子i的索引)

B [2] - &GT; 1,2,3,5
B [3] - &GT; 2,4
B [5] - &GT; 1,3,4


现在实施RMQ后,它将如下: -



(cc [i] [j] [k]存储b [i] [j]和b [i] [j +(2 ^ k)-1]之间最大元素的索引



cc [2] [0] - > 1,2,3,5
CC [2] [1] - &GT; 1,3,3-
CC [2] [2] - →3

CC [3] [0] - &GT; 2,4-
CC [3] [1] - →4

CC [5] [0] - &GT; 1,3,4
CC [5] [1] - →3个


My Code

1 个答案:

答案 0 :(得分:2)

100 1
88 33 23 56 97 54 8 74 43 95 91 63 38 13 7 7 52 29 6 85 70 15 52 18 78 9 85 51 28 43 4 68 75 78 75 23 32 34 48 74 28 90 36 66 2 95 24 54 23 29 90 45 96 93 14 73 2 99 75 81 93 31 100 19 8 75 93 39 60 41 64 88 30 100 5 84 46 28 89 20 56 30 64 3 22 78 75 75 76 2 8 20 32 7 38 39 33 82 30 93
95 95 97

输出为 -1 -1 ,但gcd(38,95)= 19,因此ans应为 38 1

  

更换&#39;休息&#39;通过&#39;继续&#39;第75行给AC:)