This preview shows pages 1–3. Sign up to view the full content.
Introduction to Algorithms
December 9, 2005
Massachusetts Institute of Technology
6.046J/18.410J
Professors Erik D. Demaine and Charles E. Leiserson
Handout 33
Quiz 2 Solutions
0
2
4
6
8
0
10
12
14
10
20
30
40
50
60
70
80
90
100
110
120
130
140
# of students
Quiz 2 Score
Problem 1. Ups and downs
Moonlighting from his normal job at the National University of Technology, Professor Silver
meadow performs magic in nightclubs. The professor is developing the following card trick. A
deck of
n
cards, labeled
1
,
2
, . . . , n
, is arranged face up on a table. An audience member calls out
a range
[
i, j
]
, and the professor ﬂips over every card
k
such that
i
←
k
←
j
. This action is repeated
many times, and during the sequence of actions, audience members also query the professor about
whether particular cards are face up or face down. The trick is that there are no actual cards: the
professor performs these manipulations in his head, and
n
is huge.
Unbeknownst to the audience, the professor uses a computational device to perform the manip
ulations, but the current implementation is too slow to work in real time. Help the professor by
designing an efﬁcient data structure that supports the following operations on
n
cards:
•
F
LIP
(
i, j
)
: Flip over every card in the interval
[
i, j
]
.
•
I
S
F
ACE
U
P
(
i
)
: Return
TRUE
if card
i
is face up and
FALSE
if card
i
is face down.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document2
Handout 33: Quiz 2 Solutions
Solution:
Let
F
be the number of F
LIP
operations requested by the audience. Notice that perform
ing a single ﬂip F
LIP
(
i,
j
)
is equivalent to performing two ﬂips, F
LIP
(
i,
∗
)
and F
LIP
(
j
+
1
,
∗
)
.
One fast solution is to use a dynamic orderstatistic tree, where an element with key
i
represents a
ﬂip of the interval
[
i,
∗
)
. For both
x
=
i
and
x
=
j
+
1
, F
LIP
inserts
x
into the tree
T
if
x
∪≡
T
,
and deletes
x
from
T
if
x
≡
T
. I
S
F
ACE
U
P
is implemented by returning true if the number of
elements in the tree less than
i
(call it
z
) is even, and false if
z
is odd. One way to compute
z
is to insert
i
into
T
, set
z
to be one less than the rank of
i
, and then delete
i
from
T
. This data
structure requires
O
(min
{
F,
n
}
)
space and supports F
LIP
and I
S
F
ACE
U
P
operations each in
O
(lg(min
{
F,
n
}
))
time. A completely correct solution of this type received full credit.
The following list describes other types of solutions that students submitted and the approximate
number of points awarded to each.
1. Another solution is to create a static 1d range tree
T
containing the elements from 1 to
n
as
its keys. Each node
x
in the tree stores a bit that corresponds to a ﬂip of the interval of all
elements in the subtree rooted at
x
. F
LIP
(
i,
j
)
performs a range query on
[
i,
j
]
, and ﬂips the
stored bit for the
O
(lg
n
)
disjoint subtrees that are found by the query. I
S
F
ACE
U
P
(
i
)
walks
down the range tree to the node for
i
and returns true if the sum of the bits of nodes along
the path from the root to
This is the end of the preview. Sign up
to
access the rest of the document.
 Fall '09
 s
 Algorithms

Click to edit the document details