1 / 9

Lynbrook Computer Science

Lynbrook Computer Science. December 8 th , 2008. Announcements. USACO December – tonight! ACSL #1 – next week TopCoder Marathon Match – Wednesday $5000 purse!. USACO: How to stay under time-limit. Know when to brute force Use custom tester Identify slowest parts of program.

phyliss
Download Presentation

Lynbrook Computer Science

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lynbrook Computer Science December 8th, 2008

  2. Announcements • USACO December – tonight! • ACSL #1 – next week • TopCoder Marathon Match – Wednesday • $5000 purse!

  3. USACO: How to stay under time-limit • Know when to brute force • Use custom tester • Identify slowest parts of program

  4. When to brute-force? • 1 sec = ~ 1 million operations/iterations • Depends on size/complexity of each iteration • Plug in max values, determine max possible states that will need to be tested

  5. Example • There are P (3 <= P <= 15) people. Given that the productivity of two people Pi and Pj working together is Wi_j (-1000 <= Wi_j <= 1000), what is the most productive group that can be formed? • How many states will we need to test, at most?

  6. There are 2^15 = 32,768 possible groups to be formed at most (with 15 people). • In each group, each person can either be in the group, or not in the group. Thus with P people the number of possible groups is 2^P. • We can brute-force!

  7. USACO Custom Tester • USACO allows you to test your program with custom test data • Write a program to generate max size test data • Run it on USACO server to see if your program is fast enough

  8. Identifying slowest parts of a program • Nested loops = BAD! • Recursive functions: • Check how many times they call themselves. • E.g. Flood-fill recursion calls itself 8 times each time (once for each direction)

  9. Improving algorithms? • Nested loops: • Devise a new algorithm that has fewer nested loops • Recursion: • Can the solution be found with an iterative algorithm? • (Usually, it can)

More Related