A key option to further increase mobile network capacity is to deploy dense cellular networks (DCNs). This densification of cellular networks raises challenging issues though, as it likely increases the spatial variation and temporal fluctuations in load. To harness the full potential of DCNs, cell selection algorithms must take these varying load conditions into account. In this paper we study the optimal user association in DCNs based on a Linear Program (LP). Since several system parameters tend to be unknown and time-varying in practice, we develop a dynamic, self-organizing, and load-aware cell selection algorithm: the Shadow Price Assignment (SPA) algorithm. Our algorithm realizes an optimal user association without explicit knowledge...