



We keep writing recipes for Algorithm and Marathon chapters, and to provide a bit of extra motivation for you, we're adding shortterm rewards.
The first 12 contributors to deliver an approved recipe for one of these chapters, will win a TopCoder tshirt. The tshirt will be shipped out as soon as the review board approves the recipe  no waiting for the book to be published!
Each of the eligible recipes must be done by only one person from start to finish; with optional comments from other members. This means that you have either to finish a recipe you have already submitted in round 1 or 2, or write a recipe nobody has started yet. If you want to write a recipe but are unsure what it should look like, check the accepted recipes and/or contact me for comments on the specific recipe.
We also want to remind you that the top 60 contributors on the Cookbook project receive a free copy of the Cookbook once it is published. So far it is virtually every competitor, so hurry up to grab your freebies!
Next posts in this thread will provide the list of recipes with notes on their status. "accepted" means that it is approved (and is getting a tshirt ASAP); "started by" means that there is a draft of this recipe somewhere so its author can finish it; "not started" means that anybody can write it; "needs some thought" means that I still have to invent some way to fit the material of this recipe in actual recipe format and welcome any suggestions.
Also note that comments on existing recipes are welcome, however, minuses without explanation are not. If you minus a post because you dislike the poster, it's ok (from process point of view); but if you think the recipe is somehow flawed, please comment this, so that we can improve it (and honor your contribution appropriately). 

1. Algorithm Competition
1.1. Getting Started Understanding SRM competition format accepted (mart0258, Nickolas) Submitting Your Solution accepted (mingshun) Setting up your environment for an SRM started by vijay03 Writing Template not started Using and Understanding C++ Macros accepted (Eryx) Using Prewritten Code accepted (it4.kp, Nickolas) Understanding Your Rating and Why It Changes accepted (bmerry) 1.2. Approaching the Problem Dissecting Problem Statement accepted (antimatter, Nickolas) Planning an Approach to the Problem not started Recognizing Problem Types started by StevieT Solving Problems Using Alternative Bruteforce Solution accepted (Nickolas) Practicing & Improving Your Style needs some thought (momtchil) Choosing Best Programming Language not started 1.3. Finding and Avoiding Mistakes Understanding the Importance of Testing accepted (Nickolas) Avoiding Common Coding Mistakes started by maker2807 Testing for Correctness accepted (Nickolas) Testing for Efficiency not started Choosing Correct Data Types accepted (dttri, Nickolas) Using Rational Arithmetic to Avoid Floating Point Imprecision accepted (Nemui, Nickolas) Testing Using Alternative BruteForce Solution accepted (it4.kp, Nickolas) Finding Common Challenge Opportunities started by muxecoid
2. Common Algorithmic Problems 2.1. Main Data Types, Data Structures and Related Problems Working with Numbers not started Working with Strings started by dimkadimon Working with Fixedlength Arrays started by caustique Working with Variablelength Arrays (Vectors) not started Working with Maps and Sets not started Representing Sets with Bitfields accepted (bmerry) Converting between Numbers and Strings accepted (Nickolas) Parsing String Input accepted (Nickolas) Iterating Over All Subsets of a Set accepted (dimkadimon) Iterating Over All Permutations of an Array accepted (quimey, Ferlon) 2.2. Math and Geometry Performing Calculations Modulo p started by Nemui Handling Prime Numbers started by caustique Using Euclid's Algorithm started by dimkadimon Understanding Combinatorics accepted (Ferlon) Using InclusionExclusion Principle accepted (Ferlon) Using Recurrent Relations for Calculations started by Ferlon Defining Probabilities not started Using Vector Operations accepted (bmerry, Nickolas) Working with Lines and Segments started by Radheya Working with Multiple Points not started 2.3. Graphs Recognizing and Representing a Graph started by dragoon Understanding Properties of Graphs not started Handling GridRepresented Graphs started by eraserhd Searching a Graph BreadthFirst started by pszemsza_ Searching a Graph DepthFirst not started Finding the Best Path Using Dijkstra's Algorithm started by Ferlon Finding the Best Path Using BellmanFord Algorithm started by dragoon Finding all Best Paths Using FloydWarshall Algorithm started by dragoon Finding Maximum Flow Using FordFulkerson Algorithm started by Ferlon Solving Minimum Cost Flow Problem started by Ferlon Solving Maximum Bipartite Matching Problem started by ibra Recognizing the Algorithm to Use started by Nemui 2.4. Recursive Problems Recognizing Recursive Problems accepted (Ferlon) Solving Recursive Problems accepted (Ferlon) Optimizing Recursive Solution started by jmzero Solving TwoPerson Games with Perfect Information started by rasto6sk Introducing Dynamic Programming started by Dumitru Optimizing DP Solution started by Nemui 2.5. Miscellaneous Problems Using Greedy Algorithms TBD by supernova Using Binary Search accepted  examples (Eryx) Using Ternary Search accepted  examples (Eryx) Using Backtracking started by marting Using Linesweep Algorithm accepted (bmerry) Constructing Combinatorial Objects started by ntmquan Finding the lexicographically Kth combinatorial object accepted (rrpai, Ferlon) Using Regular Expressions not started 3. Marathon Competition 3.1. Getting Started Understanding Marathon Competition Format accepted (Nickolas) Dissecting Problem Statement accepted (amiune) Submitting Your Solution not started Understanding Absolute and Relative Scoring Systems accepted (Nickolas) Understanding Specific Marathon Matches started by kit1980 3.2. Working on the Problem Measuring Time accepted (cant_dance, Nickolas) Running Visualizer with Your Solution accepted (Nickolas) Setting Up Your Environment/Keeping Track of Your Progress not started Rewriting the Visualizer started by eraserhd Implementing the Limitations Locally TBD by Nickolas Comparing Solutions started by eraserhd Deciding How to Improve Your Solution started by paranoia Improving Your Solution in the Home Stretch started by eraserhd Finetuning Your Solution not started Choosing Best Programming Language not started 3.3. Methods of Solving the Problem Identifying Principal Types of Problems accepted (nhzp339, Nickolas) Generating Ideas for Your Solution accepted (Nickolas) Approaching SinglePlayer GameBased Problems accepted (Nickolas) Using Hill Climbing Techniques accepted (Nickolas) Using Simulated Annealing Techniques not started Using Genetic Algorithms not started Using SSE not started 

I want to write about submitting the solution how can I do that ? 

Just write the recipe and post it as a separate thread to http://forums.topcoder.com/?module=ThreadList&forumID=534587 (assuming that you're going to write about Algo).
This recipe should describe the required structure of the solution, with limitations that apply to submitting it  memory and time limits, allowed languages and their compilers/versions, allowed libraries etc. 

i have a recipe but i think it's not so difficult ! given n which is an integer and an array contains n1 element "Random Arrangement" which is all numbers between 0 and n except one number how can i get this number using a program which its complexity is O(N). example : n = 7 Array[] = {0,3,5,2,7,4,6} the output should be 1 

I think this task is too simple, too specific and not common enough to be included. Cookbook should contain generic things which are not evident, and this is a oneliner. 

Huh, and now we see three different recipes about using Dijkstra's algorithm! That's no good. Maybe it would be better if coders must notify in advance in this thread that they start some recipe or ask one of copilots via email about actually free ones? 

Wait, so this Cookbook won't be free? :( I thought it was going to be more of a free/open source/member driven project with the goal of writing a giant guide full of general programming information/algorithms. Similar to the tutorial section but more organized. I guess I was mistaken...
*sigh* any idea how much it's going to cost?
Edit1: I guess I could try contributing to get a free copy, I gotta allocate some time for it first lol
Edit2: nevertheless, it feels weird having TopCoder milk our collective knowledge like that and sell it back to us for a profit... 

Don't really know why you've had this idea  it was clearly stated from the start that we write the book, and O'Reilly sells it. You do buy algorithm books written by other people, don't you?
The draft version of the book is going to stay in the wiki, I think. As for the price of the book, I think we haven't set the price yet.
Well, people who are "milked" are paid for their milk, what's so weird about it? People who wrote educational content were paid as well. TopCoder isn't taking any of writer's payment, all profit from the book will be distributed between O'Reilly and book's authors. 

Hi Nickolas, I have post my ideas about solving maximum bipartite matching problem, but I wonder why the status is still Not started .. 

The status is updated not automatically but by hand. I'll be updating the statuses after I read the recipes thoughtfully and post comments to them. 

If you need them in your recipe, you can put them there, no problem, we're going to have a lot of code in recipes. Not sure about appendix though. 

Is it still possible to suggest recipes that are not yet in the structure? If yes, I'd want to suggest and write "Choosing programming language" (for both Algo and Marathon): for example, if some problem uses long arithmetics, it's may be beneficial to use Java. Similarly for regular expressions, CSV parsing and for different time constraints. 

Sure, I'll be adding them to the list. Just make sure to cover a lot of detail in these recipes. 
