In recent one year, I don't know why but there are many people sending messages to me for asking similar problems. So I decide to create this blog.
In the beginning, I must say, you may feel disappointed after reading this blog. Because I don't have any special tips. My study method has wasted me many many time.
There are some basic points I think you have known.
Practice, practice, and practice. I take so many time to think and solve problems. I think I do it 5 hours a day on average.
Make friends with many awesome people. I know many awesome people. For example, arosusti, kelvin, peter50216(peter50216), seanwu, Shik, takaramono, tmt514, ... If I have some problems that I can't solve in few weeks, I can almost get solution from my friends.
Then I say what I do for training myself.
When I do problems. There are two possible order for choosing problem.
- Start from most people solved one.
- Solve consecutive Numbers of problems and try to solve all of them.
I don't know which one is best. But I often change the strategy. And when I feel I can't solve problems anymore from a judge. I will find a new judge and continue to do the same thing.
In fact, I think the order of doing problems is not important for me. When I read and solve 90% problems from a judge. Will you think the order of solving be important? I really don't know how to choose order is best for me. So I do almost the problems.
List some judges I use.(In fact, There are many Taiwanese judges I solved not listing in following because they don't open for all people.)
Codeforces. I think Codeforces is the best judge recently. It's easy to use and contain editorial for most problems.
Topcoder. Topcoder have many awesome problems. Even I sometimes think problems of 250 pt are also beautiful. It contain Editorial for most problems, too. (You can find problems here.|You can find editorial here.)
sgu I think sgu is the hardest judge. It contain many problems with unusual skill.
Timus There are many hard contest in the judge. I think it's good for group training.
ProjectEuler There are many good math problems in this website. After you solve a problem, you also can see how other people solve it in forum.
I think the feel between practice and competition is quite different. So sometimes I will random choose some problems from a judge to form a problemset and set time limit for training myself. But now Codeforces have function of virtual contest. We can simply do the same thing in Codeforces.
I don't choose problems by their topic. On the contrary, I study topic when I occur a problem that I cannot solve it. Then I will ask my friends whether the problem is related to some topic or google it.
I usually read AC code of other people even I can solve it. Sometimes we can found a totally different solutions, better time complexity solutions, or short solutions.
I don't study from specific websites or resources, either. I will google each thing from google respectively.
That's all what I do for studying algorithm.