### pikmike's blog

By pikmike, history, 3 years ago, translation,

• +33

 » 3 years ago, # |   +54 contribution of a0[i] in ar[n] is Using this and binary search on answer , you can solve this in NlogK
•  » » 3 years ago, # ^ | ← Rev. 3 →   0 Just hijacking the thread -- I think I have seen the steps of deriving this equation in a HackerRank problem classified under mathematics, but I couldn't find it. In case if someone finds that proof please do me a favor and put the link below.Edit: Speak of the devil, found it. https://www.hackerrank.com/challenges/divisor-exploration-3/editorial .... forget it, it's not the same thing.
•  » » 3 years ago, # ^ | ← Rev. 3 →   0 rajat1603 Can you explain how(about the contribution)?
•  » » » 3 years ago, # ^ |   0 contribution of something in ar[c] is sum of its contribution in ar[c - 1] and ar - 1[c] , this formula looks like the formula for number of paths between 2 points in a 2d grid for which the formula is well-known.
•  » » » » 3 years ago, # ^ |   0 Thanks a lot
 » 3 years ago, # |   0 Is there a name for the type of function in G? It's some combination of Sigmoid and ReLU, but I couldn't find it's name...
•  » » 3 years ago, # ^ |   0 It has a jumps so it is quite useless and can't have own name.
•  » » » 3 years ago, # ^ |   0 Oh, I meant the version without jumps. Is there name for that?
•  » » » » 3 years ago, # ^ |   0 f(x) = max(l, min(h, x)) is called clamping and C++ has std::clamp to do that. I don't know about a specific name, but the function is basically clamp multiplied by a and then added by an offset of b.
 » 3 years ago, # |   +3 Can anyone help me in understanding the rationale behind choosing the way the dp is being done? Why the 3D approach? How was the logic arrived at? Is there another, more intuitive way? Thanks!
•  » » 3 years ago, # ^ |   +7 When I look at this problem I think: "Okay, the answer depends on 4 parameters: how many numbers we processed, how many chosen to subset, what power of 2 divide subset, what power of 5 divide subset". Then I chose 3 of the parameters as DP state, and one (largest) as DP value. Is it intuitive enough?
•  » » » 3 years ago, # ^ |   0 Thanks, MrDindows. It looks natural now!
 » 3 years ago, # | ← Rev. 7 →   +1 Could somebody explain the way we store all possible summary powers of 5 in dp array? There can be i * log5(1018) variants, and if we will iterate through them all n2 times (including non-existing), it will waste too much memory ..I tried to use map to exclude non-existing variants, but n3 * log(n * log5(1018)) got TL: http://codeforces.com/contest/837/submission/29189656Thanks in advance :)UPD. Finally got it. We do not need to store current position, only 2 last lays needed (dp[2][200][200 * log5(1018)])
 » 3 years ago, # |   +10 My lame F solution that passes:n > 3 is sufficient to pass the naive approach (after zero prefix deletion). So we should handle n==2 and n==3. For n==2 we can write linear O(1) equation on k, and for n==3 there is quadratic equation on k which can be solved in O(1) or O(log 10^18) using binsearch.
•  » » 3 years ago, # ^ |   0 How did you figure out that a brute force solution will pass whenever N>3?
•  » » » 3 years ago, # ^ |   0 Just try the worst case: 1 0 0 0... and 10^18
 » 3 years ago, # |   +16 On Problem G, I set up four President Tree and the Time Limit seems too tight for me 29192449, maybe I will be hacked sooner or later :)
•  » » 3 years ago, # ^ |   +90 What the f**k is a president tree.
•  » » 3 years ago, # ^ |   +3 this should be called chairman tree :)
 » 3 years ago, # | ← Rev. 2 →   +14 Simpler solution to Problem E. Without prime factorization. Let d = gcd(a, b); It can be proved that f(a,b) = f(a/d, b/d); if a is prime, then answer is (b % a + b/a); Then the result can be recursively computed. My solution
•  » » 3 years ago, # ^ |   0 Please explain how do you prove the above fact?? I am simply unable to come to it :(
•  » » » 3 years ago, # ^ |   0 It comes from the fact mentioned in the editorial: "when we subtract gcd(x, y) from y, new gcd(x, y) will be divisible by old gcd(x, y). And, of course, x is always divisible by gcd(x, y)." Because of this we always subtract k*gcd(x,y), so we can just divide by k.
•  » » » » 3 years ago, # ^ |   0 Thanks :)
 » 3 years ago, # |   0 For Problem F - In fact, you can brute force the prefix sums if the array is of size at least 4. In case of size 2 it's super simple. And lastly, in case of size 3 it can be solved mathematically.
 » 3 years ago, # |   0 Regarding problem D, does this sentence: "the first dimension should be stored in two layers and recalced on the fly" mean that :for every position i you only need the result of i-1 so no need to store the results corresponding to positions earlier than i-1 ?
 » 3 years ago, # |   0 Anyone can help me to find what's wrong with my solution for problem D? http://codeforces.com/contest/837/submission/29282743
•  » » 3 years ago, # ^ |   0 you are not checking this case number of power of fives equal to zero. so for 5's 2's 64 0 6 32 0 5 16 0 4 8 0 3 3125 5 0 start your loop for number of power of fives from 0.
•  » » » 3 years ago, # ^ |   0 ah, thanks for helping. it got AC now.
 » 3 years ago, # |   0 can anyone elaborate this line?Let dp[i][j][l] be the maximum amount of twos we can collect by checking first i numbers, taking j of them with total power of five equal to l. It is usually called "the knapsack problem".
•  » » 3 years ago, # ^ |   0 For dp[i][j][l] = n, n is the greatest integer that satisfies 2^n | (the product of the numbers in the selected subset) l is the greatest integer that satisfies 5^l | (the product of the numbers in the selected subset) j is the number of numbers selected from the set (or the size of the subset selected) i is the number of numbers considered eg. If dp[3][2][2] = 1, (looking at the first 3 numbers given, selecting exactly two such that 5^2 is the greatest power of 5 that divides the product), 2^1 is the greatest power of 2 that divides the product.
 » 3 years ago, # | ← Rev. 2 →   0 Task ECan anybody proove that k in new gcd will be PRIME (that there is no better non-prime k)?
•  » » 3 years ago, # ^ |   0 For any number n=p1*p2*p3.. if the inflexion point(where the gcd changes) is divisible by n then it will be divisible by p1,p2..pn but the converse isn't true.
 » 2 years ago, # |   0 I am trying to solve D after reading editorila,but what is wrong with this solution: 41662606plzz help me!!
 » 5 months ago, # |   0 F has a much simpler solution using contribution technique i believe.