Recently, while training for the USACO contest, I realized that I am not very good at ad-hoc and greedy problems. My training have been mainly focused on data structures and complex algorithms, such as Li Chao's Segment Tree and HLD, making my ad-hoc skills not very good. Take 2021A - Meaning Mean for example. Though I did solve it during the contest, I had no idea how to formulate a proof for my method. As for other harder ad-hoc problems, I have no idea how to solve them.
I have been looking for problem lists of this sort, such as the USACO bronze ad-hoc problem list, but I believe they are below my skill level.
So, are there any tips regarding how to improve skills of this type? Are there any problem lists that I can train on?