I realised that there is only one way improve one's skill, and that is through practice. So I decided to practice more topics and more problems on codeforces and different judges. This is simply a daily record for what I did through my vacation.
I also want to tell you about stopstalk.com . It is a good site to make and keep you daily coding record.
16 MAY 2017
Problems Solved -
This was a simple problem and it used Z function for prefix length calculation
Although the problem was simple, I had some trouble in understanding the language of the problem. It took time more than required.
Participated Contest -
I participated in a virtual contest ( Round 308 DIV 2 ). I was able to solve all the problems, but then last problem was accepted just 2 min before the contest ended.
The problem was fairly simple, but then rather than simply adding the area, I made a 2-D hash map. Guess I have to practice a little more for problem A.
The problem was mathematical. I solved it by forming a series. Got one WA for not using long long.
I solved the problem using meet in middle. But the editorial talked about an another wonderful way to solve that. Do watch the editorial solution. It is an excellent concept in itself.
This was another interesting problem to solve. I used concept of slopes to generate triangle. Got 4 WA. Was not taking care of slope sign and was not handling 0 slope and inf slope cases.
Pretty interesting problem to solve both by greedy and by DP. I used the later N*N approach. Initially thought of using multiplication as boundaries, but then didn't wanted to take risk. Got 4 WA because of simple mistakes in the loops. Got accepted just before 2 min from end.
17 MAY 2017
Solved very few problems. Found a lot of problems hard to solve.
Problems Solved -
It was a good problem of binary search. Although I found it a little hard for problem C Div 2. Guess I have practice still more. It used an standard NlogN solution using binary search where we have to binary search over the completion time of the task and then check the users required. Good problem for practice.
Fairly easy problem. Requires direct implementation
very good problem for practice. I was missing a lot of corner cases while solving. Had to search for a method to find mismatch in logN time in the array. I think this problem was worth solving.
Problems Unsolved -
It would be a great help if someone could help me with the unsolved problems.
18 MAY 2017
Problems Solved -
I solved some simple problems on hackerearth and URI. One problem that I liked was from URI —
This was a good problem where we had to swap nodes. I used map for mapping and index function and an inverse index function for getting position of a node and getting value at any position. for swapping, I swapped those two.
Then some problems on codeforces
Finally solved the matrix problem. Used binary search for reducing the size of squares.
Direct implementation
Direct implementation
Turned out to be easy for problem C. Just travel over one possible value, then find the value of other and then maximise the sum.
Had fun while solving this. Used map to store pairs of character and prefix sum values. Then used a linear algorithm to add values for all location while deleting previously occurred nodes. Did in NlogN.
Problems unsolved -
19 MAY 2017
I only participated in a virtual contest on URI. Few of the good problems were —
HintThe problem was fairly easy but the statement was bit confusing.
HintAgain the main problem was decoding the statement. The only place that mentioned that the graph was undirected was when the statement said the relation is mutual. But while reading the problem you will feel like the graph is directed.
HintIt was a basic mathematics problem that used mod inverse and factorial.
20 MAY 2017
Today I solved problems on snackdown qualifiers and hackerearth circuits. In night, I participated in round 415 DIV 2. The results were not very good. Was only able to solve 3 problems. I feel like I have difficulty with interactive problems. Will have to practice more.
Apart from the contests, I solved an extra problem on hackerrank.
- https://www.hackerrank.com/challenges/kth-ancestor
HintThe problem required to find the kth ancestor with dynamic insertion and deletion. I used an array to keep track of active elements. Then, for insertion and deletion, I used dp on that particular node. It only required logN steps. Finding the solution was then easy. For insertion in beginning, I used level order traversal to insure that the parent are inserted before the child. Good problem to practice.
21 MAY 2017
Today I practise some problems on codeforces and spoj.
HintIt was a simple problem of finding the LCA of a given pair of nodes. I used dp to solve the problem. Another possible way is to do an euler tour of the tree and then use RMQ to find the LCA. sparse tree can answer RMQ in constant time, so that will be faster.
HintFirst increase the count of the nodes that are given to you. The decrease the count of their LCA by 2. The thing is, we are going up level by level. At any given level at a time. We see how many fools can go up a level. That is equal to fool that came to that level minus the fool that stay at that level node. The number of fool staying was done by subtracting at LCA as they want to meet at a path of minimum distance.
HintIt requires simple counting of one and zero. Giving it some time will directly lead to this conclusion
HintThe problem was really simple. It only required implementation. One can easily come up with an N*N solution. As soon as one come up with an N*N solution, One can easily reduce it to an O(N) solution. link for both solution —
HintIt was among the most confusing problem statement that I can across in my life. Even after reading it 4 — 5 time, I was unable to understand what actually was going on. So here is a simple problem statement. One can remove one doll at a time and that too only the uppermost. It means that the only chain that we don't have to break is the chain 1, 2, 3, 4 ... k. and then break every other doll and the n assemble over the k length chain.
HintIt was an amazingly good problem of greedy using binary search as a sub routine. It took some time to come up with the solution. I made an array that had distance (max distance b/w boundaries, min distance b/w boundaries). Then sorted them according to the max distance. Then while traversing, I gave the shortest possible length of bridge to the required gap. If it was not possible, then answer was no.
22 MAY 2017
Today was an extremely bad day for me. I participated in a virtual contest and was able to solve only 2 problems. Realised how bad I am at geometry. So tomorrow is going to be an extensive practice session. I also solved one problem on hackerearth circuits. A bad day :(
23 MAY 2017
Today I solved a few problems and participated in a virtual contest. Guess something went wrong with CF. In the middle of virtual contest, It dumped me out of the contest, and when 45 min were left, It again brought back me in. I solved One problem on hackerearth circuits.
solved problems
HintThe problem was easy, But I took a lot of time to code. Just had to check whether there we some points greater equal 4. If not then alien, otherwise can be checked for bear and elephant.
HintAgain an easy problem with more coding at least for me. Direct implementation.
HintAn easy problem with observation. Just found out the minimum card required for any height and then checked whether other cards can be arranged accordingly. Easy for C.
HintThe D problem was easier than C. Can be solved using string matching. Instead of matching the strings, just match the steps. Solution will be clearer.
HintAn easy problem for E. Can be solved just with dfs and binary search. I have two solutions
HintThe best problem I solved in day. Try to put minimum number node in as early index as possible. That is it.
24 MAY 2017
Still doing hackerearth circuits. Unable to do consecutive remainder. Still have to practice more maths.
25 MAY 2017
Practiced some easy problems on hackerearth and codeforces. The problems that I practiced on hackerearth were very easy. I cannot say the same for codeforces. Today's question were a bit harder.
HintThe problem was of finding mst including a particular edge. The problem required finding the maximum length path joining the the two vertices. Let us say the edge weight cam out to be x, and the weight of the included edge is y, The cost of mst is z. Then ans is z — x + y.
HintComing up with a solution is an easy task. The hard part lies only in the implementation. Just need to find an equidistance path from both nodes and then count all node reachable from the node such that we do not go in the path of the given two vertices.
HintThe problem was of geometry and we just had to convert the hexagon in a triangle by drawing triangle on any three alternate edges.
HintJust needed to convert both the string into lexicographical smallest. Then compare whether the given two string are equal.
HintThe problem was of combinatorics. Just needed to find the ways of going to a particular point without going on any other point that lies before it. the ans was C(x+y, x);
26 MAY 2017
HintSimple Maximum spanning tree.
HintWe just have to traverse in reverse direction. If we get x+1 for any x, we replace that x by x+1 in the multiset.
HintCan make a hash for every node using some random value. then check whether the hash value of r and l-1 are same.
27 MAY 2017
HintCan be solved by storing frequency, first occurrence and last occurrence.
Hintjust sort the array. find minimum size for both boys and girls. Using this we can find the amount x. Then print minimum of 3*x or w.
HintCan be solved using simple brute force. Find total sum, and for every length find the maximum sum that you can save.
Hinthad to come up with a linear state to save memory limit exceed. N*N complexity. For every possible end, search for the corresponding start.
28 MAY 2017
HintThe best hint for this question would be to first try for upto 100000 and then try to find the pattern. Also there are few diversions from regular pattern at few places.
HintIt is actually a dp problem. Try to find the number of even sequence starting and ending at a particular point.
HintJust Greedily allocate first to first.
29 MAY 2017
HintJust store the frequency in a pair then sort and print.
HintJust direct Implementation
HintThe question was fun to try due to some unusual constraints.
HintMake sure that the variables are not always space separated from = sign.
HintThis problem has wrong solution. Just check whether the string don't match.
HintIf the string don't match at a particular pair position, then one can add any number of possible and equal characters on either side.
Hintjust store the first m characters and the index in a pair and then sort.
30 MAY 2017
HintThe idea is to use two pointer and then keep updating the answer on the go.
HIntThe idea is to do the bfs over all values
HintThe idea was to convert every level to leaf level and then sort and combine the range accordingly. Then check over all possible feasible combination.
31 MAY 2017
HintJust make 26 segment tree, one for each letter. And then use lazy update for sorting.
1 JUNE 2017
Just gave the contest on codeforces
2 JUNE 2017
HintJust find all prime powers and that will be enough.
HintBy pegion hole principle, Whenever n >= m, and is yes. Or you can do an exhaustive search using set.
HintJust for all i check whether j is in range
HintCan be solved using bridge. Make a separate graph that contains only shortest path vertices, and make it undirected. now find all bridges. Since there can be multiple loops, instead of direct checking parent, check whether index matches or not.
3 JUNE 2017
Doing Codechef Long Challange
4 JUNE 2017
5 JUNE 2017
Did codechef long and participated in education codeforces round
6 JUNE 2017
HintJust generate all numbers and then for every range, add the required number.
7 JUNE 2017
Did contest on codeforces
8 JUNE 2017
HintCreate all possible range, then according to every query, update the ranges and ans accordingly.
HintDirect implementation of trie. Make loose and win accordingly and then decide for the answer.
9 JUNE 2017
HintStandard problem of square root decomposition. Just divide the array in block of size sqrt(n) and solve for each block. Then combine the ans for each query.
10 JUNE 2017
Practised some simple problems on CF.
11 JUNE 2017
Solved MKTHNUM on spoj.
HintBinary search over the max possible length, Then try to break that triangle in smaller part again using binary search