Please, try EDU on Codeforces! New educational section with videos, subtitles, texts, and problems. ×

Erfan.aa's blog

By Erfan.aa, 6 years ago, In English,

459A - Pashmak and Garden

Four vertices of a square with side length a (and sides parallel to coordinate axis) are in this form: (x 0, y 0), (x 0 + a, y 0), (x 0, y 0 + a), (x 0 + a, y 0 + a).

Two vertices are given, calculate the two others (and check the ranges).

Total complexity : O(1)

Sample solution: 7495194

459B - Pashmak and Flowers

If all numbers are equal then answer will be n * (n - 1) / 2, otherwise the answer will be cnt 1 * cnt 2, where cnt 1 is the number of our maximum elements and cnt 2 is the number of our minimum elements.

Total complexity : O(n)

Sample solution: 7495202

459C - Pashmak and Buses

For each student consider a sequence of d elements from 1 to k that shows the bus number which is taken by this student on each day. Obviously, there are k d different sequence at all, so if n > k d, pigeonhole principle indicates that at least two of this sequences will be equal, so that two students will become close friends and no solutions exist. But if n ≤ k d, then we can assign a unique sequence to each student and compute the answer. For computing that, we can find the first n d-digits numbers in k-based numbers.

Total complexity : O(n * d)

Sample solutions: 7495236

459D - Pashmak and Parmida's problem

First of all, we can map the given numbers to integers of range [1, 106]. Let l i be f(1, i, a i) and let r i be f(i, n, a i), we want to find the number of pairs (i, j) such that i < j and l i > r j. For computing l i s, we can store an array named cnt to show the number of occurence of any i with cnt[i]. To do this, we can iterate from left to right and update cnt[i] s; also, l i would be equal to cnt[a i] at position i ( r i s can be computed in a similar way).

Beside that, we get help from binary-indexed trees. We use a Fenwick tree and iterate from right to left. In each state, we add the number of elements less than l i to answer and add r i to the Fenwick tree.

Total complexity : O(n * logn)

Also we can solve this problem using divide and conquer method. You can see the second sample solution to find out how to do this exactly.

Sample solutions: 7495225 7495225

459E - Pashmak and Graph

In this problem, a directed graph is given and we have to find the length of a longest strictly-increasing trail in it.

First of all consider a graph with n vertices and no edges, then just sort the given edges by their weights (non-decreasingly) and add them to the graph one by one.

Let dp[v] be the length of a longest increasing trail which ends in the vertex v. In the mentioned method, when you're adding a directed edge xy to the graph, set dp[y] value to max(dp[y], dp[x] + 1) (because of trails which ends in y and use this edge). You need to take care of the situation of being some edges with equal weights; for this job we can add all edges of the same weights simultaneously.

Total complexity : O(n + m * logm)

Sample solution: 7495216

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

»
6 years ago, # |
  Vote: I like it +29 Vote: I do not like it

Thanks for the fast editorial!

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +8 Vote: I do not like it

    We're sorry. Some unexpected events caused that.

»
6 years ago, # |
  Vote: I like it +9 Vote: I do not like it

Can you please include judge's code that will be great.

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

i donot understand the E's solution cannot u explain in more details ??

»
6 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

in problem c it think it will be k^d not d^k

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

thanks for nice editorial.

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

How can you get the n * (n - 1) / 2 formula in B (otherwise than by wolfram alpha)?

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +9 Vote: I do not like it

    This formula is the number of unique pairs you can form with n given elements.

    Each element can be paired with n - 1 elements, and there are n total elements. If we multiply we get n(n - 1), but we must note that we've counted all pairs twice, so we must divide this number by 2 in order to get the right amount.

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

    If all numbers are equal then we have to choose 2 numbers from total n numbers. Then there are total nc2 = n!/((n-2)!*2!) = n*(n-1)/2 ways.

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

    you can't step in programmnig contests without this trivial knowledge :)

»
6 years ago, # |
  Vote: I like it +3 Vote: I do not like it

The solution of C(Pashmak and Buses) was awesome. Thanks a lot!!

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

I solved E with the same algorithm I get wrong answer in test 5 and don't know what's wrong ! this is my submission http://codeforces.com/contest/459/submission/7507479

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

Can anyone explain how to solve problem D using divide and conquer. I think the idea used in this problem is similar to finding the number of inversions in an array using divide and conquer.But, I am not getting how to solve it exactly..

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

    I can.

    In order to avoid using of data structures firstly compress all the numbers. Then you should calulate pref[i] = f(1, i, a[i]) and suf[i] = f(i, n, a[i]) for all i. Then you should simultaneously use merge-sort for pref and suf. And then you can do the same algorithm as for inversions by merging not pref l and pref r or suf l and suf r but pref l and suf r.

    I'll provide a code for this later.

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it +3 Vote: I do not like it

      And here it is: 7516132

      • »
        »
        »
        »
        2 months ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        I was able to get an AC using ordered set but on using merge sort tree i am getting tle. Is it becuase the time complexity for using it is O(n*logn*logn) ??

        Thanks in advance.

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

      Wherever you don't need to do the entire merge sort you have already two components you just need to sort them apart and focus only on the step of merging them .

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

can anyone please tell me where my solution is lagging to the problem 5. Help is appreciated. Thanks. http://codeforces.com/contest/459/submission/7556964

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

in problem C,can someone please explain what the author means by "n d-digits numbers in k-based numbers."??

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

    n d-digits numbers basically means first n decimal based numbers and you need to represent those n numbers in the k-based numbers.

    For example, n=6, k=2, d=3

    first 6 numbers are 0,1,2,3,4,5. And in the 2-based number system(binary)

    000, 001, 010, 011, 100, 101. And we get 6 different sequences as described in the editorial. As the bus number starts with 1 we need to add 1 to each digit of the number. So the numbers in k-based or sequences now become 111,112,121,122,211,212.

    Hope this helps. My solution

    • »
      »
      »
      15 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      thanks that was awesome

    • »
      »
      »
      8 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      can you please explain your code for generating the sequence, i don't understand it

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

http://codeforces.com/contest/459/submission/11762173 can someone help me with optimizations.used the divide and conquer technique. my code is getting tle. thanks :) ShayanH

»
4 years ago, # |
  Vote: I like it +3 Vote: I do not like it

For problem:D..just use fenwick tree to solve it. its fun to solve it with fenwick tree :-) my submission :- 17314867

  • »
    »
    2 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Its fun but I am not able to understand why were doing what were doing. I mean I understand why this works but I cant still explain to myself. Can you explain me please?

    • »
      »
      »
      4 days ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      i can try problem basically translates to finding all pairs such that

      1) i < j 2) number of a[i] from 1 to i > number of a[j] from j to n

      let count[a[i]] — count of a[i] from 1 to i

      for all i we will add to fenwick tree count[a[i]]

      now we will again iterate from beginning and keep on removing count[a[i]]

      what does my fenwick tree have at any i?

      for each "value" number of times that "value" can be obtained "value" is the count of some element from i + 1 to n

      now a simple query of count[a[i]] — 1 shall give me how many js are there such that count[a[j]] from i + 1 to n is lesser than count[a[i]] from 1 to i

      https://codeforces.com/contest/459/submission/85599666

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

unable to figure out problem A! Anybody help plz?? I am weak to figure out co-ordinate problems!

»
4 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

In problem C , Can anyone explain what does 'sequence of d elements from 1 to k' means in the editorial and how did we arrive to k^d , also how the pigeonhole principle is helping us here? Thanks. EDIT :- I solved the problem. Nice Editorial and Nice problem, I got it now. Thanks anyways.

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

    each student can take k buses. for d students the number bus arrangements is k*k*k*....*k(till d) so k^d.

  • »
    »
    18 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Each student can choose from k buses each day, so for each student there are k^d options to choose from for d days. Now there are total n students and we have to distribute these k^d options among them, if n>k^d, then at least two students will get exactly the same sequence for d days

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

    The distinct options for choosing k buses in d days is k^d. One student will choose one option. If the number of student is greater then the number of option then there is minimum 2 student who choose same option.

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

Could someone please illustrate this part:

For each student consider a sequence of d elements from 1 to k that shows the bus number which is taken by this student on each day. Obviously, there are kd different sequence at all,

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

Merge sort tree is getting MLE??Could someone tell me how to tackle this.My code : http://codeforces.com/contest/459/submission/36654409

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

Really good contest, with innovative problems. Here are all my solutions to the problems of this contest.

I liked C, especially the Pigeonhole Principle and I liked D for the data structures. I wrote an editorial on it here.

»
14 months ago, # |
  Vote: I like it 0 Vote: I do not like it

How to solve Problem E using BFS/DFS? Can anyone explain me please?

»
10 months ago, # |
  Vote: I like it 0 Vote: I do not like it

In problem D, what does Fenwick tree store? and how is this tree used to find the answer?

»
6 months ago, # |
  Vote: I like it 0 Vote: I do not like it

For problem D, i compressed the input and calculate cnt1[i] and cnt2[i] as l_i and r_i in the editorial, but instead of using a fenwick tree i used a multiset and iterate j from 2 -> n. For each j, i inserted cnt1[j-1] to the multiset and used multiset::upper_bound to count how many numbers larger than cnt2[j]. Cplusplus.com said that both multiset::insert and multiset::upper_bound takes O(log n) time, so overall it will take O(n log n). However, my solution: 68404208 got TLE in test 10. Can someone please help me figure out what is wrong ? Maybe i miscalculated the complexity ?

  • »
    »
    6 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Just in case anyone having the same problem, using multiset is ok, but using std::distance is O(n) for non-random-access iterator => TLE

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

My D solution using BIT with important comments line which can help you to make understand this easily

https://github.com/joy-mollick/Segment-Tree-And-Divide-And-Conquer/blob/master/Codeforces-D%20-%20Pashmak%20and%20Parmida's%20problem(BIT).cpp

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

Why cant we use PBDS was problem D? it is giving me runtime error.. Can anyone explain me why ? Link to my solution- Your text to link here...

  • »
    »
    4 days ago, # ^ |
    Rev. 2   Vote: I like it 0 Vote: I do not like it

    could you identify the error?

    i had encountered a similar problem on using PBDS but there memory constraints were given less clearly there it was 28 MB https://codeforces.com/contest/1354/problem/D here though that isnt the problem...

    • »
      »
      »
      4 days ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Use Fenwick tree instead

      • »
        »
        »
        »
        4 days ago, # ^ |
          Vote: I like it 0 Vote: I do not like it

        i did it by FWT just asking why this didnt work :)

        • »
          »
          »
          »
          »
          3 days ago, # ^ |
            Vote: I like it 0 Vote: I do not like it

          It requires much more of memory to work .. It have multiple points..Memory limit was given for the same

»
13 days ago, # |
  Vote: I like it 0 Vote: I do not like it

what's the use of fenwick in problem D?