1 / 68

Becoming a Good Problems Solver ― Challenging ICPC-2003/2004

Dive into practical strategies for solving complex problems like those in the ACM ICPC competition, with emphasis on understanding, planning, execution, and reflection. Explore algorithmic thinking, creative problem modeling, and teamwork dynamics.

bushs
Download Presentation

Becoming a Good Problems Solver ― Challenging ICPC-2003/2004

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. Becoming a Good Problems Solver ― Challenging ICPC-2003/2004 Yaw-Ling Lin Dept Computer Science & Info. Management, Providence University, Taichung, Taiwan.

  2. 27th Annual ACM ICPC World Finals • 68 final teams • 3,850 teams • 1,329 universities • 68 countries • 106 sites • Champions: Warsaw University. • The 27th Annual ACM International Collegiate Programming Contest, March 25, 2003, in Beverly Hills, California. 

  3. ICPC2002 Kaohsiung: 8 Problems

  4. ICPC Kaohsuing, Nov 09, 2002

  5. A: Building Bridges B: Light Bulbs C: Riding the Bus D: Eurodiffusion E: Covering Whole Holes F: Combining Images G: A Linking Loader H: A Spy in the Metro I: The Solar System J: Toll ICPC2003 World: 10 Problems

  6. ICPC 2003 Results

  7. 2003 ACM-ICPC World Finals

  8. ICPC Problem Sets • ICPC2003-World • http://icpc.baylor.edu/icpc/Finals/Problems.html • ICPC2002-Kaohsiung • http://icpc.baylor.edu/past/icpc2003/Regionals/Reports/icpc.baylor.edu/icpc/regionals/Kaohsiun02/index.html

  9. Various Kinds of Problems • Algorithms • Simulation • System Programming • Geometry • Combinatorics • Modeling, Situation Analysis

  10. G. Polya, "How to Solve It“, 1957 • Understanding The Problem • Devising A Plan • Carrying Out The Plan • Looking Back - If you can't solve a problem, then there is an easier problem you can solve: find it.

  11. UNDERSTANDING THE PROBLEM • First. You have to understand the problem. • What is the unknown? What are the data? What is the condition? • Is it possible to satisfy the condition? Is the condition sufficient to determine the unknown? Or is it insufficient? Or redundant? Or contradictory? • Draw a figure. Introduce suitable notation. • Separate the various parts of the condition. Can you write them down?

  12. DEVISING A PLAN • Second. Find the connection between the data and the unknown. Consider auxiliary problems if an immediate connection cannot be found. • Have you seen it before? • Do you know a related problem? • Look at the unknown! Think of a familiar problem having the same or a similar unknown. • Could you restate the problem? Could you restate it differently? Go back to definitions. • If you cannot solve the proposed problem try to solve first some related problem. • Did you use all the data? Did you use the whole condition?

  13. CARRYING OUT THE PLAN • Third.Carry out your plan. • Carrying out your plan of the solution, check each step. Can you see clearly that the step is correct? Can you prove that it is correct?

  14. LOOKING BACK • Fourth.Examine the solution obtained. • Can you check the result? Can you check the argument? • Can you derive the solution differently? Can you see it at a glance? • Can you use the result, or the method, for some other problem?

  15. Look at the Problems-- Problems Types • Algorithms • Dynamic Programming • Simulation • System Programming • Geometry • Combinatorics • Problem Solving

  16. Basic Techniques • English / Problem Modeling • Combinatorics / Discrete Math • Counting • Recurrence • Graphs, Trees, Connectivity • Algorithm: • Dynamic Programming • Graph Searching: DFS/BFS, Shortest Path, MST, Tree Traversal • Efficient (Human) Programming

  17. Training • Solve as many past ICPC problems as possible. • English reading and Problem Modeling  read Polya. • Thoroughly understand discrete math / structure • Understand / practice algorithmic techniques: read algorithm + data structure text book • Optional: Computational Geometry, String algorithms • Programming efficiency: routine gadgets, fast-typing, debugging tricks, writes, writes. writes … • Communications / discussions between members. • Leadership / role-playing / execution. • Time devotion.

  18. Members • English / Problem Understanding • Problem Modeler / Dispatcher • Human-Time Efficient Programmers • Team Work

  19. A: Building Bridges B: Light Bulbs C: Riding the Bus D: Eurodiffusion E: Covering Whole Holes F: Combining Images G: A Linking Loader H: A Spy in the Metro I: The Solar System J: Toll ICPC2003 World: 10 Problems

  20. City 1 City 1with bridges City 2No bridges are possible City 3No bridges are needed City 4 City 4with bridges A: Building Bridges

  21. A: Building Bridges • Bridges may be built only on the grid lines that form the edges of the squares. Each bridge must be built in a straight line and must connect exactly two buildings. • For a given set of buildings, you must find the minimum number of bridges needed to connect all the buildings. If this is impossible, find a solution that minimizes the number of disconnected groups of buildings. • Among possible solutions with the same number of bridges, choose the one that minimizes the sum of the lengths of the bridges, measured in multiples of the grid size. Two bridges may cross, but in this case they are considered to be on separate levels and do not provide a connection from one bridge to the other.

  22. A: Building Bridges

  23. City 1 City 1with bridges City 2No bridges are possible City 3No bridges are needed City 4 City 4with bridges Building Bridges: Solutions • Block: Nodes • Connectivity: Weighted Edges • Model: Minimum Spanning Tree

  24. nth switch first switch second switch third switch (n-1)st bulb third bulb nth bulb first bulb second bulb B: Light Bulbs

  25. B: Light Bulbs • Each remaining switch (1 < i < n) toggles the states of the three bulbs with indices i – 1, i, and i + 1. • The minimum cost of changing a row of bulbs from an initial configuration to a final configuration is the minimum number of switches that must be flipped to achieve the change. • 01100 represents a row of five bulbs in which the second and third bulbs are both ON. You could transform this state into 10000 by flipping switches 1, 4, and 5, but it would be less costly to simply flip switch 2. • Decimal integers are used instead of binary for the bulb configurations. Thus, 01100 and 10000 are represented by the decimal integers 12 and 16.

  26. B: Light Bulbs

  27. Light Bulbs: Solution • 10100  01110 == 00000  11010 • x1 xor x2 = b1 • x1 xor x2 xor x3 = b2  x3 = b1 xor b2 • i.e. x3 = 0 AND x3 = 0 1  • How about 111000  110011 001011 ? • ??00??  ?100??  110001 • In general, we shall have: • ??b??b??b?...?b  exact • ??b??b??b?...?b?  exact • ??b??b??b?...?b??  two cases …

  28. C: Riding the Bus

  29. C: Riding the Bus • The order-3 curve contains 9 smaller copies of the order-2 curve (with 4 reversed left to right), connected by line segments, as described for the order-2 curve. Higher order curves are drawn in a similar manner. • The connecting points to which processor components attach are evenly spaced every len units along the bus. The first connecting point is at (0,0) and the last is at (1,1). There are 9k connecting points along the order-k curve, and the total bus length is (9k–1) len units. • You must write a program to determine the total distance that signals must travel between two processor components. Each component’s coordinates are given as an x, y pair, 0 x 1 and 0 y 1, where x is the distance from the left side of the chip, and y is the distance from the lower edge of the chip.

  30. C: Riding the Bus

  31. Riding the Bus: Solution • Recursive Structure, recursive formula • Locating the smallest cell containing the points • Find the nearest edge • Find the distances within cells • Find the distances between cells

  32. D: Eurodiffusion

  33. D: Eurodiffusion • Member states decorate the coins with their own motif. No matter which motif is on the coin, it can be used anywhere in the 12 Member States. • You must write a program to simulate the dissemination of euro coins throughout Europe. Each city belongs to a country, and a country is a rectangular part of the plane. Initially, each city has one million (1000000) coins in its country’s motif. Every day a representative portion of coins, based on the city’s beginning day balance, is transported to each neighbor of the city. A representative portion is defined as one coin for every full 1000 coins of a motif. • A city is complete when at least one coin of each motif is present in that city. A country is complete when all of its cities are complete. Your program must determine the time required for each country to become complete.

  34. D: Eurodiffusion

  35. Eurodiffusion: Solution • Simulation • Graph Model: Vertex Connectivity • Iterative Flowing and Testing

  36. E: Covering Whole Holes • Whether a given cover can be used to completely cover a specified hole. Covers and holes are rectangular polygons • Moreover, both cover and hole are aligned along the same coordinate axes, and are not supposed to be rotated against each other — just translated relative to each other.

  37. E: Covering Whole Holes Input: the input consists of several descriptions of covers and holes. The first line of each description contains two integers h and c (4 h  50 and 4 c  50), the number of points of the polygon describing the hole and the cover respectively. Each of the following h lines contains two integers x and y, which are the vertices of the hole’s polygon in the order they would be visited in a trip around the polygon. The next c lines give a corresponding description of the cover. Both polygons are rectangular, and the sides of the polygons are aligned with the coordinate axes. The polygons have positive area and do not intersect themselves. The last description is followed by a line containing two zeros. Output: For each problem description, print its number in the sequence of descriptions. If the hole can be completely covered by moving the cover (without rotating it), print “Yes” otherwise print “No”. Recall that the cover may extend beyond the boundaries of the hole as long as no part of the hole is uncovered. Follow the output format in the example given below.

  38. E: Covering Whole Holes

  39. Covering Whole Holes: Solution • Computational Geometry • PLAN: very few numbers of edges • Aligning the top edge and the left edge (double pairing) • Testing overlaps

  40. F: Combining Images

  41. F: Combining Images • The Quad Tree encoding of an image is a string of binary digits. For easier printing, a Quad Tree encoding can be converted to a Hex Quad Tree encoding by the following steps: • Prepend a 1 digit as a delimiter on the left of the Quad Tree encoding. • Prepend 0 digits on the left as necessary until the number of digits is a multiple of four. • Convert each sequence of four binary digits into a hexadecimal digit, using the digits 0 to 9 and capital A through F to represent binary patterns from 0000 to 1111.

  42. F: Combining Images • If an image is homogeneous (all its pixels are of the same color), the Quad Tree encoding of the image is 1 followed by the color of the pixels. For example, the Quad Tree encoding of an image that contains pixels of color 1 only is 11, regardless of the size of the image. • If an image is heterogeneous (it contains pixels of both colors), the Quad Tree encoding of the image is 0 followed by the Quad Tree encodings of its upper-left quadrant, its upper-right quadrant, its lower-left quadrant, and its lower-right quadrant, in order.

  43. Combining Images: Solution • Recurrence: The Quad Tree encoding. • PLAN: expand the formula to an n by n square array. • ANDing the two array • Converting the square array to a Quad Tree formula. • Encoding? • 0 a b c d • 1 x • Str2Tree ? Level? Tree2Mat(T, lev)? Mat2Tree, Tree2Str

  44. G: A Linking Loader • An object module contains (in order) zero or more external symbol definitions, zero or more external symbol references, zero or more bytes of code and data (that may include references to the values of external symbols), and an end of module marker. In this problem, an object module is represented as a sequence of text lines, each beginning with a single uppercase character that characterizes the remainder of the line.

  45. G: A Linking Loader • “D symboloffset” is an external symbol definition. Starting at the address 10016, the line “D START 5C” indicates that the symbol START is defined as being associated with the address 15C16. The number of D lines in a test case is at most 100. • “E symbol” is an external symbol reference, The line “E START” indicates that the value of the symbol START. Each of the “E” lines for each module is numbered sequentially, starting with 0, so they can be referenced in the “C” lines. • “C nbyte1byte2 … byten” specifies the first or next n bytes of code and data for the current module. The value n is specified as a one or two digit hexadecimal number, and will be no larger than 10 hexadecimal. Each byte is either a one or two digit hexadecimal number, or a dollar sign. The values specified for the other bytes (those not following a dollar sign) are loaded into sequential memory locations, starting with the first (lowest) unused memory location. For example, the line “C 4 25 $ 0 37” would cause the values 2516 0116 5C16 and 3716 to be placed in the next four unused memory locations, assuming the first “E” line for the current module specified a symbol defined as having the address 15C16. If the 0-origin index of the external symbol reference is an undefined symbol, the 16-bit value inserted at the current point in the linked program is 000016. • A line of the form “Z” marks the end of an object module.

  46. G: A Linking Loader

  47. Linking Loader: Solution • System Programming • Tips: Read the problem carefully • Know the meaning of every symbol • How these values are packed / related to each other • Symbol Table / Translation • String Matching algorithm

  48. H: A Spy in the Metro

  49. H: A Spy in the Metro • Maria knows that a powerful organization is after her. She also knows that while waiting at a station, she is at great risk of being caught. To hide in a running train is much safer, so she decides to stay in running trains as much as possible, even if this means traveling backward and forward. Maria needs to know a schedule with minimal waiting time at the stations that gets her to the last station in time for her appointment.

  50. H: A Spy in the Metro • Input • The input file contains several test cases. Each test case consists of seven lines with information as follows. • The integer N (2 N 50), which is the number of stations. • The integer T (0 T 200), which is the time of the appointment. • N-1 integers: t1, t2, ... tN-1 (1  ti  20), representing the travel times for the trains between two consecutive stations: t1 represents the travel time between the first two stations, t2 the time between the second and the third station, and so on. • The integer M1 (1 M1 50), representing the number of trains departing from the first station. • M1 integers: d1, d2, ... dM1 (0 di 250 and di < di+1), representing the times at which trains depart from the first station. • The integer M2 (1 M2 50), representing the number of trains departing from the Nth station. • M2 integers: e1, e2, ... eM2 (0 ei 250 and ei < ei+1) representing the times at which trains depart from the Nth station.

More Related