  A fundamental component of the game theoretic approach to distributed control
is the design of local utility functions.Relative to resource allocation
problems that are additive over the resources, Part I showed how to design
local utilities so as to maximize the associated performance guarantees
[Paccagnan et al., TAC 2019] which we measure by the price of anarchy. The
purpose of the present manuscript is to specialize these results to the case of
submodular, covering, and supermodular problems. In all these cases we obtain
tight expressions for the price of anarchy that often match or improve the
guarantees associated to state-of-the-art approximation algorithms. Two
applications and corresponding numerics are presented: the vehicle-target
assignment problem and a coverage problem arising in wireless data caching.
