<p>Having been to USACO camp and to the IOI myself, I can speak with some authority on this topic.</p>

<p>Yes, some algorithms can be more naturally expressed in one programming language than in another, but the basic algorithm is the same. The comment that implementing some data structures in a language which lacks a garbage collector can be hard misses the fact that you can almost always <em>statically</em> allocate all data structures for USACO and the IOI. Just allocate a block of nodes and have integers indexing the next node. You're given the maximum test case sizes, so this is very easy.</p>

<p>The kinds of programs one will be programming in USACO are ones which can be programmed quite reasonably if you know your language well. There's no parsing, almost no need for dynamic memory, and programs are generally fairly short. Admittedly, if you're used to programming in a functional programming language, it may be somewhat different doing USACO in C, C++, or Java, but I encourage you to try it anyway. (You can always email the USACO coaches and ask for your language of choice to be supported, but don't expect anything.)</p>

<p>Lastly, as to the nature of the problems themselves, while it is true that DP, network-flow, Dijkstra, convex hull algorithms, etc. will be your bread and butter, so to speak, it's by no means clear how to adapt, apply, and combine these basic algorithms, together with your own insights, to construct a solution. And, of course, DP is just a technique, not an algorithm. It's really quite similar to the math Olympiad, where yes, you need to know and use Cauchy-Schwartz, cyclic quadrilaterals, etc., but where these form only the basic elements of a solution. Actually creating the solution is up to you.</p>

<p>I'm not sure which IOI problems you've looked at, but they may have been "sample" problems drawn from the practice competition, which serves only to get familiar with the grading system. It you'd like to see some real problems, the problems from this year's IOI (which I warn you was somewhat easy) are at <a href="http://www.ioi2004.org/html/competition_test1.html%5B/url%5D">http://www.ioi2004.org/html/competition_test1.html</a> . There's a link to the second day at the top. My personal favorite problem of the contest is Empodia, from the second day (although the ISC made the test data much too easy except for the last test case).</p>

<p>Another good example of how the solutions to the (highest division) USACO problems aren't just obvious applications or modifications of the basic algorithms is "selfmilk", from USACO camp 2003: the cows have a new milking system whereby each cow, at some point during the day, will enter the barn and hook herself to the milking machine, stay for some interval, and then leave. Farmer John knows when each cow enters and leaves the barn, and has a number of sensor readings of the <em>total</em> amount of milk being produced by all cows in the barn at various points in time throughout the day. The task is to determine a consistent set of values for the amount of milk produced per unit time by each cow, or to determine that the information is inconsistent. (I would like to point out that simply setting up a linear system, and solving it using Gauss-Jordan, doesn't work. The reason is that the cows' milk production rates must all be positive.)</p>

<p>In any event, I strongly encourage you to give USACO a try! The upcoming qualifying contest will have a range of problem difficulties (without any <em>really</em> hard problems), but for the later contests you'll be in a division with problems suited to your level.</p>