Índex de poder de Banzhaf (2) U17233


Statement
 

pdf   zip

En un parlament hi ha nn partits polítics, als que ens referirem com 11, 22, \ldots, nn. El partit polític iiwiw_{i} escons. Les lleis parlamentàries fixen que, per tal que una votació sigui aprovada, cal que hi hagi un mínim de qq vots favorables, on qq és anomenada la quota del parlament. Així doncs, una coalició de partits S{1,2,,n}S \subseteq \{1, 2, \ldots, n\} és guanyadora si iSwiq\sum_{i \in S} w_{i} \geq q (assumirem que els membres d’un partit segueixen la disciplina de vot); i que és perdedora altrament.

L’índex de poder de Banzhaf és una manera de quantificar el poder d’un partit polític en les votacions. Es pot calcular de la forma següent:

  1. Es llisten totes les coalicions guanyadores.

  2. En cadascuna d’aquestes coalicions, s’identifiquen els partits crítics. Un partit és crític en una coalició guanyadora si, sense aquest partit, la coalició passa a ser perdedora.

  3. L’índex de poder d’un partit és el nombre de vegades que aquest partit és crític dividit pel nombre de vegades que qualsevol partit és crític.

Per exemple, si q=8q=8, n=3n = 3, w1=6w_{1} = 6, w2=3w_{2} = 3 i w3=2w_{3} = 2, hi ha tres coalicions guanyadores:

  • {1,2}\{1, 2\}, en la qual tots dos són crítics (ni {1}\{1\} ni {2}\{2\} són coalicions guanyadores).

  • {1,3}\{1, 3\}, en la qual tots dos són crítics (ni {1}\{1\} ni {3}\{3\} són coalicions guanyadores).

  • {1,2,3}\{1, 2, 3\}, en la qual només 11 és crític (perquè tant {1,2}\{1, 2\} com {1,3}\{1, 3\} són guanyadores, però no {2,3}\{2, 3\}).

En total, 11 és crític 3 cops, 22 és crític 1 cop, i 33 és crític 11 cop. Com que el nombre de vegades que qualsevol partit és crític és 3+1+1=53 + 1 + 1 = 5, els índexs de poder dels partits 11, 22 i 33 són 35\frac{3}{5}, 15\frac{1}{5} i 15\frac{1}{5}, respectivament.

Un politòleg vol calcular els índexs de poder dels partits del parlament, però no se’n surt. Podeu calcular-los-hi vosaltres?

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb qq, la quota, i nn, el nombre de partits. A continuació vénen nn nombres wiw_{i}. Podeu suposar que 2n502 \leq n \leq 50, que 0<wi500 < w_{i} \leq 50 per tot 1in1 \leq i \leq n, i que s2qs500\frac{s}{2} \leq q \leq s \leq 500, on s=i=1nwis = \sum_{i=1}^{n} w_{i}. En particular, això garanteix que sempre hi haurà almenys un partit crític.

Sortida

Per cada cas, escriviu nn línies amb els índexs de poder dels partits 11, 22, \ldots, nn. Escriviu els índexs com a fracció irreductible, seguint el format dels jocs de prova públics. Acabeu cada cas amb una línia amb 10 guions.

Observació

Per a escriure les fraccions irreductibles, podeu fer servir la funció math.gcd de la llibreria math de Python.

La solució esperada d’aquest problema és una programació dinàmica amb cost O(n2s)O(n^{2} s), on s=i=1nwis = \sum_{i=1}^{n} w_{i}, tot i que es pot resoldre més eficientment.

Public test cases
  • Input

    8
    3
    6 3 2
    
    8
    3
    8 3 2
    
    51
    3
    50 49 1
    
    6
    4
    4 3 2 1
    
    36
    4
    20 17 16 3
    
    17
    4
    13 12 6 2
    
    16
    5
    7 6 3 3 2
    
    65
    5
    47 46 17 16 2
    
    58
    6
    31 31 28 21 2 2
    

    Output

    3/5
    1/5
    1/5
    ----------
    1/1
    0/1
    0/1
    ----------
    3/5
    1/5
    1/5
    ----------
    5/12
    1/4
    1/4
    1/12
    ----------
    5/12
    1/4
    1/4
    1/12
    ----------
    1/3
    1/3
    1/3
    0/1
    ----------
    3/8
    3/8
    1/8
    1/8
    0/1
    ----------
    1/3
    7/27
    5/27
    1/9
    1/9
    ----------
    1/3
    1/3
    1/3
    0/1
    0/1
    0/1
    ----------
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python