How to be a good acm solver

Post here if you don't find any other place for your post. But please, stay on-topic: algorithms, programming or something related to this web site and its services.

Moderator: Board moderators

Post Reply
hridoy
New poster
Posts: 21
Joined: Tue May 08, 2007 10:30 am
Location: Dhaka
Contact:

How to be a good acm solver

Post by hridoy » Sun Jun 03, 2007 9:26 pm

How someone can be a good acm solver?
After learning a language suppose C what should he/she learn? which sector computer science or math to be a good programmer, a good acm solver ?

Expecting advice from experienced acm solver.

mf
Guru
Posts: 1244
Joined: Mon Feb 28, 2005 4:51 am
Location: Zürich, Switzerland
Contact:

Post by mf » Sun Jun 03, 2007 10:14 pm

I'll just quote tomek:

(21:22:01) tomek> nitdgp: you need a few things
(21:22:05) tomek> nitdgp: math
(21:22:12) tomek> nitdgp: motivation
(21:22:29) tomek> nitdgp: algorithmics knowledge
(21:22:55) tomek> nitdgp: math+algorithms - algorithm/data structures design skills
(21:23:14) tomek> nitdgp: a programming language
(21:23:19) tomek> nitdgp: and coding practice
(21:23:20) nitdgp> cormen is rite book na?
(21:23:23) tomek> nitdgp: that's about it :)
(21:23:55) nitdgp> oh dear so nice of u... thanks a lot..
(21:24:48) tomek> nitdgp: later you may want to learn some complexity theory, np-completeness and such
...
(21:27:30) tomek> nitdgp: you can start by solving problems from a book [cormen], implementation is an easier skill and a different one

yiuyuho
A great helper
Posts: 325
Joined: Thu Feb 21, 2002 2:00 am
Location: United States
Contact:

Post by yiuyuho » Mon Jun 04, 2007 4:09 am

Nice!! +++

hridoy
New poster
Posts: 21
Joined: Tue May 08, 2007 10:30 am
Location: Dhaka
Contact:

Post by hridoy » Tue Jun 05, 2007 2:16 pm

Can u suggest me any good books for algorithm or math?

User avatar
little joey
Guru
Posts: 1080
Joined: Thu Dec 19, 2002 7:37 pm

Post by little joey » Tue Jun 05, 2007 3:39 pm

Sources I use are:

- Google; it's easy to learn how to use it and almost everything that's on the net can be found with it.

- Cormen; essential for every serious programmer.

- Programming Challenges; nice, but contains some nasty errors (my version does). Useful for the beginning problem solver.

- The Algorithm Design Manual; for the advanced solver. Is more a dictionary of current algorithmic knowledge, than a practical guide to problem solving. But is a good starting point for further research.

- A Math Compendium (in Dutch); contains essential mathematical concepts. I guess every language has something like it. I use it a lot to look up formulas that I tend to forget.

- http://www.geometryalgorithms.com/algorithm_archive.htm; very useful for solving geometry orientated problems.

- An English/Dutch dictionary; an English/Bangla dictionary would be more useful in your case :)

And then some more tips:

- Be eager; to be able to solve some problems you need a lot of perseverance. Make the problem your personal friend/enemy. Use dead time (waiting on the bus, at your dentist, visiting your in-laws, etc.) thinking about unsolved problems. Guess most people would call this crazy rather than eager.

- Don't be satisfied with easy solutions, make a solution that gives you a sense of pride. For most problems it is easy to hack together some unreadable code that just gets AC. When you get accepted, go over your code again and see where it can be improved. One criterion might be: will I be able to guess what this problem is about without reading the problem description, but just looking at the code? Use sensible variable and function names; make small, well named functions, and don't cram everything together in one function main(). A clearly structured program will make it easier to find errors and/or bottle necks. Also: compare your run time with others. If your program runs much longer than average, then you probably missed something. Hunt it down.

- When learning algorithms, refrain from using built-in solutions for 'trivial' tasks like sorting, hashing, min/max-queues, vectors, strings, lists, etc., but code them out yourself. This will improve your basic programming skills and increase your problem solving abilities. Use simple concepts until you master them, and then take the next step.

- Hunt the internet for the problems you can't solve. Lots of problems in the archive first appeared in an online contest and solutions, datasets and/or hints can be found for many of them. Needles to say that you don't copy the solutions, but try to understand them and create your own.

That's about it. Follow my advise, and in about 5 years time you will be able to solve almost all problems :)
The biggest problem with most problems is not how to solve the problem, but how to not solve what is not the problem.

yiuyuho
A great helper
Posts: 325
Joined: Thu Feb 21, 2002 2:00 am
Location: United States
Contact:

Post by yiuyuho » Tue Jun 05, 2007 6:04 pm

I've done almost all of that (except cormen and math compendium) and it's been 5 years....and I have yet to be able to solve many problems...:(

Post Reply

Return to “Other words”