Universal Cup Judging System

Universal Cup

时间限制: 15.0 s 内存限制: 2048 MB 总分: 100 难度: [显示] 交互 通信 可 Hack ✓
统计

Þetta er gagnvirkt verkefni. Mundu að tæma úttaksbiðminnið (flush) eftir hverja prentun. Til að tæma úttakið geturðu notað:

  • fflush(stdout) eða cout.flush() í C/C++;
  • System.out.flush() í Java og Kotlin;
  • sys.stdout.flush() í Python.

problem_16334_77704ec8666e21115ab8bd1ebbcde701.png
Hugmyndin að baki leiknum, myndskreytt af Nano Banana Pro.

Þú tekur þátt í herkænskuleik sem spilaður er í umferðum og nefnist Revolver Roulette.

Leikurinn hefst með sexhleypu sem hlaðin er nákvæmlega $6$ kúlum. Hver kúla er óháð öðrum og með jöfnum líkum annaðhvort virk kúla (live) eða púðurkúla (blank). Báðir leikmenn vita alltaf hve margar virkar kúlur og púðurkúlur eru eftir í tromlunni hverju sinni, en nákvæm röð þeirra er óþekkt.

Hver leikmaður byrjar með $5$ lífstig (HP) og $2$ hluti. Ef HP leikmanns fer niður í $0$ eða lægra fellur hann úr leik og hinn leikmaðurinn sigrar. Leikmenn skiptast á að framkvæma aðgerðir.

Gangur umferðar

Í sinni umferð má virki leikmaðurinn framkvæma hvaða fjölda sem er af eftirfarandi aðgerðum:

  • Nota hvaða hlut sem er.
  • Framkvæma hvaða skotaðgerð sem er.

Umferðinni lýkur aðeins þegar skotaðgerð veldur því að umferðin færist yfir til hins leikmannsins, eða þegar annar hvor leikmaðurinn fellur úr leik.

Skotaðgerðir

Virki leikmaðurinn verður að velja eina af eftirfarandi skotaðgerðum:

  • Fire at Opponent: Virki leikmaðurinn skýtur næstu kúlu á hinn leikmanninn. Ef hún er virk tapar hinn leikmaðurinn $1$ HP. Óháð tegund kúlunnar færist umferðin yfir til hins leikmannsins.
  • Fire at Self: Virki leikmaðurinn skýtur næstu kúlu á sjálfan sig. Ef hún er virk tapar virki leikmaðurinn $1$ HP og umferðin færist yfir til hins leikmannsins. Annars, ef hún er púðurkúla, heldur virki leikmaðurinn umferðinni og heldur áfram að framkvæma aðgerðir.

Hlutir

Þegar hlutur er notaður eyðist hann og virki leikmaðurinn heldur umferðinni, óháð tegund hlutarins. Hlutir eru sýnilegir báðum leikmönnum. Þegar leikmaður fær nýjan hlut (þar á meðal hvern upphafshlut) er hann valinn jafndreift af handahófi úr eftirfarandi fjórum tegundum:

  • Dummy: Skjóta næstu kúlu á æfingabrúðu. Þetta eyðir kúlunni og telst ekki sem skotaðgerð.
  • Magnifier: Kíkja á næstu kúlu til að sjá hvort hún sé virk kúla eða púðurkúla. Báðir leikmenn fá að vita niðurstöðuna.
  • Converter: Snúa við tegund næstu kúlu (virk $\leftrightarrow$ púðurkúla). Báðir leikmenn sjá uppfærðan fjölda virkra kúlna og púðurkúlna.
  • Cage: Fá einnota áhrif sem koma í veg fyrir að umferðinni ljúki við næstu skotaðgerð sem venjulega myndi ljúka henni. Nánar tiltekið:

    • Ef leikmaðurinn framkvæmir síðar Fire at Opponent (óháð því hvort kúlan er virk eða púðurkúla) virkjast áhrifin og umferðinni lýkur ekki.
    • Ef leikmaðurinn framkvæmir síðar Fire at Self og kúlan er virk virkjast áhrifin og umferðinni lýkur ekki (leikmaðurinn tapar samt $1$ HP en heldur umferðinni).

    Áhrifin eyðast samstundis eftir að þau hafa virkað einu sinni. Í mesta lagi má nota einn Cage hlut í hverri umferð.

Endurhleðsla (Reloading)

Þegar tromlan tæmist eru $6$ nýjar kúlur hlaðnar samstundis (hver um sig óháð virk eða púðurkúla með jöfnum líkum). Báðum leikmönnum er tilkynnt um nýjan fjölda virkra kúlna og púðurkúlna. Að auki fær hvor leikmaður uppfyllingu hluta upp í allt að $2$ hluti (leikmaður með $k$ hluti fær $(2 - k)$ nýja hluti, þar sem hver er valinn óháð og jafndreift af handahófi úr tegundunum fjórum hér að ofan).

Markmið

Þú ert leikmaðurinn sem á fyrstu umferðina og markmið þitt er að vinna leikinn með því að fella andstæðinginn úr leik.

Inntak

Fyrsta línan inniheldur tvær heiltölur $n$ og $w$, sem gefa til kynna að þú þurfir að vinna að minnsta kosti $w$ af $n$ leikjum til að lausnin verði samþykkt. Það eru aðeins þrjú próf:

  • Dæmapróf: $n = 1$ og $w = 0$. ($0\%$)
  • Leynipróf 1: $n = 2\,000$ og $w = 1\,000$. ($50\%$)
  • Leynipróf 2: $n = 20\,000$ og $w = 11\,000$. ($55\%$)

Sýna má fram á að þegar báðir leikmenn spila ákjósanlega vinnur leikmaðurinn sem á fyrstu umferðina um það bil $56.89\%$ leikjanna.

Samskiptareglur

Upphaf leiks

Lausnin þín kemur fram sem leikmaðurinn sem á fyrstu umferðina gegn samskiptaforritinu. Í upphafi hvers leiks prentar samskiptaforritið heiltölu $g$:

  • Ef $g = 0$ er öllum leikjum í núverandi keyrslu lokið. Lausnin þín verður að hætta keyrslu samstundis.
  • Annars er $g$ númer núverandi leiks ($1 \le g \le n$).

Vegna tæknilegra atriða er lausnin þín keyrð tvisvar á hverju prófi:

  • Samskiptaforritið getur ákveðið hvort það endurræsi lausnina þína með því að gefa $g = 0$ hvenær sem er.

Þú munt fá sömu gildi á $n$ og $w$ í hverri keyrslu prófs. Þess vegna er $n$ ekki alltaf jafnt fjölda leikja í núverandi keyrslu. Tryggt er að hver leikur $1, \dots, n$ er spilaður nákvæmlega einu sinni samanlagt í keyrslunum tveimur. Að öðru leyti getur lausnin þín óhikað hunsað skilyrðið um tvöfalda keyrslu.

Staða leiks

Þá prentar samskiptaforritið stöðulínu leiksins sem inniheldur $13$ óneikvæðar heiltölur:

$$t \quad l \quad b \quad h_1 \quad d_1 \quad m_1 \quad c_1 \quad k_1 \quad h_2 \quad d_2 \quad m_2 \quad c_2 \quad k_2$$

  • $t \in \{0, 1, 2\}$: staða umferðar.
  • $l, b$ ($1 \le l + b \le 6$): núverandi fjöldi virkra kúlna og púðurkúlna sem eftir eru í tromlunni.
  • $h_1$ ($0 \le h_1 \le 5$): núverandi HP þín.
  • $d_1, m_1, c_1, k_1$ ($0 \le d_1 + m_1 + c_1 + k_1 \le 2$): fjöldi Dummy, Magnifier, Converter og Cage hluta sem þú heldur á núna.
  • $h_2$ ($0 \le h_2 \le 5$): núverandi HP andstæðingsins.
  • $d_2, m_2, c_2, k_2$ ($0 \le d_2 + m_2 + c_2 + k_2 \le 2$): fjöldi Dummy, Magnifier, Converter og Cage hluta sem andstæðingurinn heldur á.

Tilvik $t = 0$ (Leik lokið)

Núverandi leik er lokið. Samskiptaforritið heldur áfram í næsta leik (og prentar nýtt $g$).

Tilvik $t = 1$ (Þín umferð)

Þú verður að prenta heiltölu til að velja aðgerð:

  1. Fire at Opponent.
  2. Fire at Self.
  3. Nota Dummy hlut.
  4. Nota Magnifier hlut.
  5. Nota Converter hlut.
  6. Nota Cage hlut.

Ef aðgerðin er ógild (t.d. að nota hlut sem þú átt ekki, eða nota Cage hlut oftar en einu sinni í sömu umferð) helst staða leiksins óbreytt, og samskiptaforritið prentar $0$ og sömu stöðulínu ($13$ heiltölur) aftur. Þótt enn sé þín umferð verður þú að gera aðra gilda aðgerð til að halda leiknum áfram.

Annars tekur aðgerðin gildi og samskiptaforritið prentar niðurstöðuheiltölu:

  • Fyrir aðgerðir $1$–$5$: Skilar $1$ ef næsta kúla fyrir aðgerðina er virk, $2$ ef hún er púðurkúla.
  • Fyrir aðgerð $6$: Skilar $1$ (engar upplýsingar um kúlu afhjúpaðar).

Samskiptaforritið prentar síðan uppfærða stöðulínu leiksins.

Tilvik $t = 2$ (Umferð andstæðings)

Samskiptaforritið hermir eftir aðgerð andstæðingsins og prentar tvær línur:

  • Auðkenni aðgerðar $a \in \{1, \dots, 6\}$.
  • Niðurstöðuheiltöluna ($1$ eða $2$ eins og lýst er hér að ofan).

Andstæðingurinn gerir aldrei ólöglega aðgerð. Strax á eftir prentar samskiptaforritið næstu stöðulínu leiksins ($13$ heiltölur).

Fyrir hverja lotu leiksins notar leikjahermirinn gervihandahófsgjafa með föstu slembifræi (seed). Einnig notar andstæðingurinn í samskiptaforritinu lögmálsbundna (deterministic) herbragðsáætlun. Ákvörðunin um að endurræsa lausnina þína er óháð samskiptaferlinu. Því leiðir sama runa aðgerða alltaf til sömu leikstöðu.

Prófunartól fylgir með til að hjálpa þér að þróa og prófa lausnina þína.

Dæmi

Dæmi 1, Umferð 1

Inntak
1 0
1
1 3 3 5 0 0 0 2 5 1 0 1 0

1
1 3 3 5 0 0 0 1 5 1 0 1 0

1
1 2 3 5 0 0 0 1 4 1 0 1 0

0
1 2 3 5 0 0 0 1 4 1 0 1 0

2
1 2 2 5 0 0 0 1 4 1 0 1 0

1
2 1 2 5 0 0 0 1 3 1 0 1 0
5
2
2 2 1 5 0 0 0 1 3 1 0 0 0
1
1
1 1 1 4 0 0 0 1 3 1 0 0 0

1
2 0 1 4 0 0 0 1 2 1 0 0 0
3
2
2 2 4 4 0 1 0 1 2 0 1 0 1
2
1
1 1 4 4 0 1 0 1 1 0 1 0 1

1
1 1 4 4 0 0 0 1 1 0 1 0 1

1
0 0 4 4 0 0 0 1 0 0 1 0 1
0
Úttak


6


1


6


2


1








1








4


1

Dæmi 1, Umferð 2

Inntak
1 0
0
Úttak
		

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.