Competitive programming problems are generally divided into a number categories, each requiring a different skill set, algorithm, or data structure to solve. One subdivision of programming problem topics contains problems for which there exists no general technique or algorithm, i.e. no well-studied solution. These are known as ad-hoc problems.
Each ad-hoc problem is unique, and requires a specialized approach. Some competitive programmers consider ad-hoc problems to be the easiest type of problem. In reality, ad-hoc problems can be easy or hard! For beginners just starting to code competitively, it may be useful to practice lots of these problems.
Here is a good source of ad-hoc problems to practice with: codechef.com/tags/problems/ad-hoc. For each problem, first try to "pseudocode" (planning your solution on paper in non-code words) and solve independently. If you find yourself stuck on a problem for longer than several hours, it may be helpful to consult the solution in order to thoroughly understand the general approach, then code it yourself without checking the solution.