Earlier quoted context omitted.
Speaking as the current #20 position [0] on the Google Code Jam scoreboard... I'm in my university's team for the ACM ICPC [1]. We practice about one or two times per week, where each practice session is 5 hours. Some of the stronger programmers really practice this stuff every day. cf. Nick Wu's description of his preparation for programming contests [2]. [0] In 5 hours, the large input sets will be judged. I might…
If you don't mind me asking, how do you guys? I always compete in my university's "local" contest, which is basically a tryout for competing for a spot on the team that goes to the ACM. I try doing practice problems, but when I can't solve one, I'm not sure where to go from there.
At my university, after a practice session, we sometimes discuss solutions to problems so that those who couldn't figure them out will know how to solve them in the future. After being told the solution to a problem you couldn't solve, you should try coding it up anyway.