When submitting a solution in C++, please select either C++14 (GCC 6-32) or C++17 (GCC 7-32) as your compiler. ×

meaningIess's blog

By meaningIess, history, 5 years ago, In English

You are given a number $$$n$$$ and a set $$$d$$$ that describe the graph. The graph has n vertices, numbered 0 through n-1. Vertices i and j are connected by an edge if and only if |i-j| is an element of d. Return the number of connected components of this graph.|d|<=50 and n<=1e18. In Topcoder its called "HugeGraph". I have searched for the editorial and I found nothing. Please anybody gives a editorial? Btw, for n,|d|<=1e5, if the problem can be solved? Sorry for my bad english:)

  • Vote: I like it
  • +9
  • Vote: I do not like it

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

I cannot search for this problem in Topcoder archive. Was this special round? If you know which srm it was you can check petr blog, I think he explains some problems from round he participated.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Maybe from big $$$n$$$ you can find the answer with Berlekamp-Massey?

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Ah, $$$d_i$$$ can be huge :(

  • »
    »
    5 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    For big N, wouldn't the answer be just gcd?

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Yes, i think if $$$n > 2 \cdot \max{d}$$$.

    • »
      »
      »
      5 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      But what the answer will be when $$$n$$$ and $$$d_i$$$ both huge?

      • »
        »
        »
        »
        5 years ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        Yeah, that's the question ;p

        I don't how to solve it. I only answered to 300iq's comment saying that BM is unnecessary.

        • »
          »
          »
          »
          »
          5 years ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          For little $$$d_i$$$, it can be seemed $$$gcd$$$. For big $$$d_i$$$, it won't make a loop, every edge using big $$$d_i$$$ will minus the answer by 1? I guess that if all the $$$d_i>=n/2$$$ then the answer is $$$n - edges number$$$? I don't know if it's true.

»
5 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Please, anybody replies? I neeeeeed the editorial! I'm VERY interested in this problem :(