Блог пользователя yash_daga

Автор yash_daga, история, 6 месяцев назад, По-английски

We invite you to participate in CodeChef’s Starters138, this Wednesday, 12th June, rated for till 6-Stars(ie. for users with rating < 2500).

Time: 8:00 PM — 10:00 PM IST

Joining us on the problem setting panel are:

Note: Some problems have subtasks

Written editorials will be available for all on discuss.codechef.com. Pro users can find the editorials directly on the problem pages after the contest. The video editorials of the problems will be available only to Pro users.

Also, if you have some original and engaging problem ideas, and you’re interested in them being used in CodeChef's contests, you can share them here. Hope to see you participating.

Good Luck!

  • Проголосовать: нравится
  • +47
  • Проголосовать: не нравится

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Has the contest admin changed ?

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
»
6 месяцев назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится

Distinct Substring Video Editorial : YOUTUBE Video LInk --Click Here

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    wth , it hasnt even ended yet

    • »
      »
      »
      6 месяцев назад, # ^ |
        Проголосовать: нравится -11 Проголосовать: не нравится

      No no....I have uploaded it 2-3 minutes before the end of contest... There was no chance of watching...understanding and implementing in just 2 -3 minutes... But still Sorry for that !

»
6 месяцев назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Imagine ppl cheating in CodeChef Starters xD.

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

The balance feels off, with large gaps between the last four problems. Look at div 2 standings, there's an order of magnitude difference between them. The problems themselves are not bad but the difficulty curve is heavily frontloaded.

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

The clarification section of Codechef is the most useless thing. They never reply any queries that's been asked.

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    They replied to me in a few minutes in previous contest.... I think they only reply to a doubt that is non trivial

    • »
      »
      »
      6 месяцев назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Non-Trivial is a biased statement. In codeforces, If someone asks a silly question, they often reply with "Read the Problem Statements Carefully" or they clearly clarify and answers the question that's been asked.

      My concern to this problem was in both suffix and prefix the "Equal" condition is being used. So, My concern was any array containing all the equal elements will have same AND and XOR for every indices and that clearly satisfies the question conditions. But I was getting WA. I needed [still need actually] a little clarification about that.

      Lastly, sorry for being rude as today, I am totally pissed off.

      • »
        »
        »
        »
        6 месяцев назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        "Read the Problem Statements Carefully"

      • »
        »
        »
        »
        6 месяцев назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        if we use same elements in array then at some point we got SUFFIX_XOR less then SUFFIX_AND to avoid this just put another number at end(like 3) eg. 7 7 7 7 PREFIX XOR-> 7 0 7 0 PREFIX AND-> 7 7 7 7 0 7 0 7 <- SUFFIX XOR 7 7 7 7 <- SUFFIX AND

      • »
        »
        »
        »
        6 месяцев назад, # ^ |
          Проголосовать: нравится +4 Проголосовать: не нравится

        1) you are not being rude (and nor am I trying to be rude in following arguments)

        2) that is indeed a silly doubt. (I am not trying to be rude, just brutally honest). The people will answer a doubt only when they feel that the doubt can genuinely not be cleared by the participant. In your case, you came up with a possible solution of all elements being equal, and it turned out to be wrong (because it gave WA). So what should your next step have been? Is it to directly raise the issue with problem setters? Here is what you should have done: Conduct a dry run of your test case. Solve for every step of what output is your solution giving and what is expected. You would have easily figured out that your solution fails for [the case which is stated in the comment below], and you need to cook a better solution. This is the normal problem solving procedure !! If the problem setter tells you the test case where your solutions fail, there is no point in even conducting the contest.

        The clarification section is present to clear any ambiguities in the question. It is not there to ask why your solution is failing or why this approach isn't working or anything else. That is something which we have to do ourselves. There are countless times where I was stuck on a problem because it failed some edge case, maybe on the last test case or something, but that didn't mean I would ask it as a clarification, because that is not what 'clarification' means.

        Knowing where your solution fails, finding edge cases, is a part of competitive programming and you should not seek help during contest for that.

      • »
        »
        »
        »
        6 месяцев назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится

        I will give you an example of a query that actually got answered in clarification (which was asked by me in previous contest). Because I really want to help you and others who don't understand, what is expected when someone asks a doubt in the section.

        In previous contest, I had a doubt in this question. The doubt was, regarding whether the the bomb can be placed at a non-integer position 'X'. It was a genuine doubt that wasn't written in the question, and it's answer being 'YES' or 'NO' could have changed the solution for a test case (actually it doesn't affect the answer either way, but whatever, I thought at that time it did, lol).

        Because there was no way I could have answered this doubt myself, I got a clarification about what the question meant, even though that clarification was absolutely useless, it didn't affect what the expected solution should be. Maybe on codeforces I would have got a reply like 'read the statement carefully or sth', but the point is, ignoring that it does not affect the answer, this is the type of doubt that I think are eligible to be asked on clarification section.

»
6 месяцев назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

For this problem, here is a solution without divide and conquer. The main problem with $$$M$$$ not being prime is taking modulo inverse but since $$$M \leq 10^9$$$, $$$M$$$ can have at most $$$10$$$ distinct prime factors. So, we can deal with them separately.

  • »
    »
    6 месяцев назад, # ^ |
    Rev. 3   Проголосовать: нравится +17 Проголосовать: не нравится

    In my opinion, a simpler way is to use a segtree with the modular product as its operation to query the product of each length k subarray.

    mint ans = 0, sum_prod = 0;
    for (int i = 0; i < n; ++i) {
      if (i >= k) {
        sum_prod -= seg.prod(i - k, i);
      }
      sum_prod *= a[i];
      sum_prod += a[i];
      ans += sum_prod;
    }
    cout << ans.val() << '\n';
    
  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    My solution don't hereneed all this . At each point just maintain the ans till k element before.

  • »
    »
    6 месяцев назад, # ^ |
    Rev. 5   Проголосовать: нравится 0 Проголосовать: не нравится

    Let us define $$$last[i]$$$ = $$$\prod_{j=i}^{i+k-1} A[j]$$$ , if $$$i + k < n$$$ , else $$$last[i] = 0$$$. Define $$$Ans[i]$$$ as the sum of product of elements of all good subarrays ( i.e. having $$$\le k$$$ elements ) with left endpoint as $$$i$$$. Then $$$Ans[i] = A[i] + {A[i] (Ans[i + 1]-last[i+1]) }$$$. You can compute $$$last[i]$$$ using sparse tables. The final answer is $$$\sum_{i=0}^{n-1}Ans[i]$$$

»
6 месяцев назад, # |
Rev. 3   Проголосовать: нравится +11 Проголосовать: не нравится

Code

My solution for TRIPLE PRIMES is not optimal, i just brute forced all pair of primes less than $$$sqrt(n)$$$.

  • »
    »
    6 месяцев назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Test cases are weak ...

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    The prime number theorem strikes yet again!

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    after careful observation we can infer that one of the numbers would always be 2 as the N is even i.e.( 2^2 + odd + odd) = N (even), now we have two degrees of freedom only we can iterate through the prime array, and check whether the ( newN — primes[i]*primes[i]) is present their in primes array and its value should be diff from the (primes[i]*primes[i]) , in this way the TC is reduced.

»
6 месяцев назад, # |
  Проголосовать: нравится +30 Проголосовать: не нравится

In problem Cyclopian Edges, it says N <= 10^5 and M <= 10^5. But I think there are testcases where N and M exceed those values.

AC submission: https://www.codechef.com/viewsolution/1064731464. Runtime Error submission: https://www.codechef.com/viewsolution/1064731491. The only difference between those submissions is that I assert that N and M are at most 10^5.

  • »
    »
    6 месяцев назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    Sorry for that, there was some last minute miscommunication between N and M which lead to this. It is now updated.

»
6 месяцев назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Why do problems like B exist? Does anyone even enjoy them?