*166*
<http://www.quora.com/Dynamic-Programming-DP/What-are-systematic-ways-to-prepare-for-dynamic-programming#>
 
<http://www.quora.com/Dynamic-Programming-DP/What-are-systematic-ways-to-prepare-for-dynamic-programming#>

I don't know how far are you in the learning process,

If you think you are a newbie

   1. CodeHS <http://www.codehs.com/> -- Personally graded,
      video-then-program format problems, startingwith a toy language called
      Karel and moving up to Javascript, culminating in you making the game
      Breakout in your browser. Founded by two ex-CS106a TAs at Stanford from
      which the curriculum was largely adapted. They have probably 40 hours of
      really good content and, most importantly, provide you friendly,
one-on-one
      help with like ~3 hours turnaround when you need it. Check out my version
      of Breakout I made after doing all of the content:
EpicBreakout<http://www.thenickhuber.com/epicbreakout.html>.
      (1)
      2. Google's Python
Class<http://code.google.com/edu/languages/google-python-class/> --
      Unlike above, requires some set-up on your machine (i.e. you're
not coding
      in-browser), but still good. About two days worth of lectures on Python
      with a handful of good problems, culminating in regular
expressions (like a
      custom CRTL + F in a Word document) and a problem where you descramble an
      encoded image from a website.
      3. CodingBat <http://www.codingbat.com/> -- Python and Java problems.
      No frills, just the exercises -- probably better for someone
with a little
      bit of background (meaning you know what a function/parameter is and can
      use The Google to figure out/find syntax/functions you need).
The site was
      made by the same guy who taught the Google Python Class.
      4. Khan Academy <http://www.khanacademy.org/> -- A few intro
      tutorials (mostly graphics/animation-focused) in JS using a well-regarded
      library (Processing.js) and then a wide-open project space for you to see
      programs other people have made (i.e. the end result and the code) and to
      make your own, potentially forking off of their work. Here's a game that
      some guy made that served as inspiration for my version of
Breakout:Mercury
      Subspace <http://www.khanacademy.org/cs/mercury-subspace/938561708>.
      Pretty great, right?
      5. Codecademy <http://www.codeacademy.com/> -- Solid
      read-then-write-code format of small problems broken into different
      subpieces. I used their HTML/CSS tutorials to get a basic
background before
      making my personal website (http://www.thenickhuber.com/) and am
      going to use their stuff on more advanced JS and jQuery when I get to it.
      Still, their grader is a bit buggy and there's a large variance in course
      quality/overlap in material, since everything is written by different
      people.
      6. Learn Python The Hard Way <http://learnpythonthehardway.org/book/> --
      Read-then-implement exercises, starting from no assumed knowledge. Good,
      but still not as good as interactive problems; I gave up after doing ~20%
      or so of it because it's unapologetically repetitive, but have
read lots of
      good reviews of it.



If you think you are an experienced.. I am assuming you are used to most of
the algos.
Here is how to master "Dynamic programming" and also few other algos

   1. Problems which simply ask you to come up with the formula of
   calculating the answer from the subproblems. These are the most common ones
   and probably the ones you want to practice on (95+% of DP problems are of
   this type). On TopCoder, they are usually ranked as Div1-500 and easier. On
   other online judges just look for the problems with many successfull
   solutions.
   The number of dimensions of the array doesn't really tell much about the
   problem difficulty, so don't judge based on that. It only needs a little
   more implementation.
   The hardest problems in this category require you to use bitmasks. For
   example:
   
http://community.topcoder.com/st...<http://community.topcoder.com/stat?c=problem_statement&pm=11379&rd=14437&rm=308640&cr=22685656>
   Here is a very nice tutorial on bit manipulation techniques:
   
http://community.topcoder.com/tc...<http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=bitManipulation>
   2. Problems which require you to come up with efficient linear
   recurrence, putting the recurrence into the matrix and calculate the N-th
   power of the matrix. Examples are:
   http://www.spoj.pl/problems/XORR...<http://www.spoj.pl/problems/XORROUND/>
   http://www.spoj.pl/problems/TRKN...<http://www.spoj.pl/problems/TRKNIGHT/>
   http://www.spoj.pl/problems/RP/
   3. Problems which require you to eliminate the inner cycle in the
   algorithm. For more information you can look at Knuth's speedup of
   calculating the optimal binary search tree (
   
http://dl.acm.org/citation.cfm?i...<http://dl.acm.org/citation.cfm?id=1644032>)
   or:
   
http://community.topcoder.com/tc...<http://community.topcoder.com/tc?module=HSProblemStatement&pm=8712&rd=12046>
   4. Problems which require you to effectively calculate and operate on
   the convex hull of the optimal solutions. For a nice problem with a
   solution, look at the problem *Harbingers *from CEOI 2009. Other
   examples are:
   http://www.spoj.pl/problems/MKPA...<http://www.spoj.pl/problems/MKPAIRS/>
   http://www.spoj.pl/problems/NKLE...<http://www.spoj.pl/problems/NKLEAVES/>
   http://www.spoj.pl/OI/problems/C...<http://www.spoj.pl/OI/problems/CEOI09HA/>


That's pretty much all you need to know. A word of advice: don't think
about it too much. Just solve the problems (not the easy ones!) and after
some time your brain will start to recognize the patterns. You will be
faster and able to solve harder problems and suddenly you'll become an
expert ;-)


On Mon, Apr 14, 2014 at 12:58 PM, <[email protected]> wrote:

> Greetings to all.
> Got a poor performance on this year's qualifiers and would really like to
> improve.
> What I am looking for is that I need a supplement to practicing on
> previous problems.
> I may be able to solve them ... but the question is how quickly.
> Perhaps this is more of an IQ domain where I need to up my IQ to increase
> the speed in solving problems?
> Although I did find some deficiency area in terms of programming such as
> lacking experience in handling very large numbers, etc.
> But generally I think it is more on arriving at the solution.
> Does anyone have any tips? tricks? training menu?
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google Code Jam" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/google-code/1659092e-cd44-439c-9ea3-0381bdf62402%40googlegroups.com
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Regards
Vivek Dhiman

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/CABaJBvK%2B4jJ4HMMNUyXR_gmSY7NvLJKap%2BmiV5MLnZSjQH_L7g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to