Transcript ppt - HKOI

Greedy
TIM AU YEUNG
HKOI 2012
Greedy
 Try some cases
 Make a guess
 local optimum -> global optimum
 Not really a specific algorithm
 Practice more
 By feelings
Example 1: Coins
 7 kinds of coins: $0.1, $0.2, $0.5, $1, $2, $5, $10
 Find minimum number of coins needed to pay $n
 Try n = 3.6
 $2, $1, $0.5, $0.1
 Try n = 18
 $10, $5, $2, $1
 Every time use the coin of highest value
Example 2: Subarray Sum
 Given a one-dimensional array of numbers
(containing at least one positive number)
 Find the nonempty contiguous subarray which has
the largest sum


Calculate maximum subarray ending at each position
simple example of DP (will be taught later)
 If all numbers are non-positive?
Example 3: Bridge and Torch
 Four people come to a river in the night.
 There is a narrow bridge, but it can only hold two
people.
 Person A can cross the bridge in 1 minute, B in 2
minutes, C in 5 minutes, and D in 8 minutes.
 When two people cross the bridge together, they
must move at the slower person's pace.
 What is the minimum time required for all four
people to cross the river?
Example 3: Bridge and Torch
 N people


1) AB Go A Back, YZ Go B Back
2) AZ Go A Back, AY Go A Back
 N-2 people
Example 4: Yogurt factory POJ 2393
 C_i: cost to produce one unit of yogurt in week i
 S: fee to store one unit of unused yogurt per week
 Y_i: units of yogurt demanded in week i
 (Yogurt produced in week i and already in storage,
can be used to meet yogurt demand for that week)


Week i: sell yogurt produced in week j (j<=i)
minC = min(C_i, minC + S)
Example 5: Persistent Numbers POJ2325
 Given a number n, find the smallest number that can
reach n by repeatedly multiplying the digits
 e.g. 679 -> 378 -> 168 -> 48 -> …
 48 can be reached from 679
 There may be No Solution!


Factorize n by 9, 8, 7, 6, 5, 4, 3, 2 in order
Distribute them from low-value digit to high-value digit
Greedy Practice List
 POJ 2709
 POJ 1042
 POJ 1065
 POJ 2586
 POJ 1328
 POJ 1018
 HKOJ 1019
 HKOJ 1137
 HKOJ 2014
If (Greedy_fails)
 Fail for boundary cases
 Special solution deal with them
 Fail for many cases


Don’t be greedy
Think of other algorithm
Greedy Conclusion
 Guess
 Try some cases
 Hard to prove or disprove
 Easy to code
 Efficient
 Practice more!