Competitive programming is like a sport and cannot be mastered in the short run. I have been trying to get a grip on it for the last six or seven years and I finally think I have come up with a plan.
Prof Steven Skinea's lecture series on competitive programming (it's an actual course at a university https://www.youtube.com/watch?v=3dkbFf82_b8 ) is the answer I've come up with. Might also be a good idea to grab a copy of his algorithm design manual to go with the course.
You need to spend at least a year solving problems to get yourself acquainted with the various problem patterns. Even if you solve one problem per day for the next 365 days, I assure you that you'll be well on your path to becoming a competitive programmer.