Olympiad Maths Prep

Track / Stage 5 / 262 of 400 #862 of 2000

Problem 862

AIME late
Combinatorics Difficulty 5.6 Find the answer

Let S1,S2,,S100S_{1}, S_{2}, \ldots, S_{100} be finite sets of integers whose intersection is not empty. For each non-empty T{S1,S2,,S100}T \subseteq\left\{S_{1}, S_{2}, \ldots, S_{100}\right\}, the size of the intersection of the sets in TT is a multiple of T|T|. What is the smallest possible number of elements which are in at least 50 sets?

Official solution

The answer is 50(10050)50\binom{100}{50}.
ף Rephrasing (cosmetic translation only, nothing happens yet). We encode with binary strings vF2100v \in \mathbb{F}_{2}^{100} of length 100 . Write vwv \subseteq w if ww has 1 's in every component vv does, and let v|v| denote the number of 1 's in vv.

Then for each vv, we let f(v)f(v) denote the number of elements xSix \in \bigcup S_{i} such that xSivi=1x \in S_{i} \Longleftrightarrow v_{i}=1. For example,
- f(11)f(1 \ldots 1) denotes 1100Si\left|\bigcap_{1}^{100} S_{i}\right|, so we know f(11)0(mod100)f(1 \ldots 1) \equiv 0(\bmod 100).
- f(110)f(1 \ldots 10) denotes the number of elements in S1S_{1} through S99S_{99} but not S100S_{100} so we know that f(11)+f(110)0(mod99)f(1 \ldots 1)+f(1 \ldots 10) \equiv 0(\bmod 99).
- ...And so on.

So the problem condition means that f(v)f(v) translates to the statement
P(u):u divides vuf(v) P(u): \quad|u| \text { divides } \sum_{v \supseteq u} f(v)
for any u00u \neq 0 \ldots 0, plus one extra condition f(11)>0f(1 \ldots 1)>0. And the objective function is to minimize the quantity
A:=v50f(v). A:=\sum_{|v| \geq 50} f(v) .

So the problem is transformed into an system of equations over Z0\mathbb{Z}_{\geq 0} (it's clear any assignment of values of f(v)f(v) can be translated to a sequence ( S1,,S100S_{1}, \ldots, S_{100} ) in the original notation). \square
Note already that:

Proof. If we have found a valid assignment of values to f(v)f(v) for v50|v| \geq 50, then we can always arbitrarily assign values of f(v)f(v) for v50|v|50, note v|v| terms increase by 1 while one term decreases by v-|v|. When v=50|v|=50, only f(v)f(v) decreases by 50 .
Now, given a valid assignment, we can modify it as follows:
- First apply pushdowns on 111 \ldots 1 until f(11)=100f(1 \ldots 1)=100;
- Then we may apply pushdowns on each vv with v=99|v|=99 until f(v)<99f(v)<99;
- Then we may apply pushdowns on each vv with v=98|v|=98 until f(v)<98f(v)<98;
- . . . and so on, until we have f(v)<50f(v)<50 for v=50|v|=50.

Hence we get f(11)=100f(1 \ldots 1)=100 and 0f(v)<v0 \leq f(v)<|v| for all 50v10050 \leq|v| \leq 100. However, by downwards induction on v=99,98,,50|v|=99,98, \ldots, 50, we also have
f(v)f0(v)(modv)f(v)=f0(v) f(v) \equiv f_{0}(v) \quad(\bmod |v|) \Longrightarrow f(v)=f_{0}(v)
since f0(v)f_{0}(v) and f(v)f(v) are both strictly less than v|v|. So in fact f=f0f=f_{0}, and we're done.
Remark. The fact that push-downs actually don't change AA shows that the equality case we described is far from unique: in fact, we could have made nearly arbitrary sub-optimal decisions during the greedy algorithm and still ended up with an equality case. For concrete example, the construction
f(v)={500v=10094v=991002v50v98 f(v)=\left\{\begin{array}{ll} 500 & |v|=100 \\ 94 & |v|=99 \\ 100-2|v| & 50 \leq|v| \leq 98 \end{array}\right.
works fine as well (where we arbitrarily chose 500 at the start, then used the greedy algorithm thereafter)

Source: NuminaMath-1.5, licensed Apache-2.0. Statement and solution reproduced as published; topic, difficulty and ordering added by this site.