QOJ.ac

QOJ

Süre Sınırı: 2 s Bellek Sınırı: 512 MB Toplam puan: 100 Zorluk: [göster] Hack'lenebilir ✓

#1220. 屠龍勇士

İstatistikler

小 D 最近在網上發現了一款小遊戲。遊戲的規則如下:

  • 遊戲的目標是按照編號 $1\sim n$ 順序殺掉 $n$ 條巨龍,每條巨龍擁有一個初始的生命值 $a_i$。同時每條巨龍擁有恢復能力,當其使用恢復能力時,它的生命值就會每次增加 $p_i$,直至生命值非負。只有在攻擊結束後且當生命值恰好為 $0$ 時它才會死去。
  • 遊戲開始時玩家擁有 $m$ 把攻擊力已知的劍,每次面對巨龍時,玩家只能選擇一把劍,當殺死巨龍後這把劍就會消失,但作為獎勵,玩家會獲得全新的一把劍。

小 D 覺得這款遊戲十分無聊,但最快通關的玩家可以獲得 ION2018 的參賽資格,於是小 D 決定寫一個笨笨的機器人幫她通關這款遊戲,她寫的機器人遵循以下規則:

  • 每次面對巨龍時,機器人會選擇當前擁有的、攻擊力不高於巨龍初始生命值中攻擊力最大的一把劍作為武器。如果沒有這樣的劍,則選擇攻擊力最低的一把劍作為武器。
  • 機器人面對每條巨龍,它都會使用上一步中選擇的劍攻擊巨龍固定的 $x$ 次,使巨龍的生命值減少 $x\times ATK$。
  • 之後,巨龍會不斷使用恢復能力,每次恢復 $p_i$ 生命值。若在使用恢復能力前或某一次恢復後其生命值為 $0$,則巨龍死亡,玩家通過本關。

那麼顯然機器人的攻擊次數是決定能否最快通關這款遊戲的關鍵。小 D 現在得知了每條巨龍的所有屬性,她想考考你,你知道應該將機器人的攻擊次數 $x$ 設定為多少,才能用最少的攻擊次數通關遊戲嗎?

當然,如果無論設定成多少都無法通關遊戲,輸出 -1 即可。

輸入格式

從檔案 dragon.in 中讀入資料。

第一行一個整數 $T$,代表資料組數。

接下來 $T$ 組資料,每組資料包含 5 行。

  • 每組資料的第一行包含兩個整數 $n$ 和 $m$,代表巨龍的數量和初始劍的數量;
  • 接下來一行包含 $n$ 個正整數,第 $i$ 個數表示第 $i$ 條巨龍的初始生命值 $a_i$;
  • 接下來一行包含 $n$ 個正整數,第 $i$ 個數表示第 $i$ 條巨龍的恢復能力 $p_i$;
  • 接下來一行包含 $n$ 個正整數,第 $i$ 個數表示殺死第 $i$ 條巨龍後獎勵的劍的攻擊力;
  • 接下來一行包含 $m$ 個正整數,表示初始擁有的 $m$ 把劍的攻擊力。

輸出格式

輸出到檔案 dragon.out 中。

一共 $T$ 行。

第 $i$ 行一個整數,表示對於第 $i$ 組資料,能夠使得機器人通關遊戲的最小攻擊次數 $x$;如果答案不存在,輸出 -1。

範例

輸入格式 1

2
3 3
3 5 7
4 6 10
7 3 9
1 9 1000
3 2
3 5 6
4 8 7
1 1 1
1 1

輸出格式 1

59
-1

說明

第一組資料:

  • 開始時擁有的劍的攻擊力為 $\{1,9,10\}$,第 $1$ 條龍生命值為 $3$,故選擇攻擊力為 $1$ 的劍,攻擊 $59$ 次,造成 $59$ 點傷害,此時龍的生命值為 $-56$,恢復 $14$ 次後生命值恰好為 $0$,死亡。
  • 攻擊力為 $1$ 的劍消失,拾取一把攻擊力為 $7$ 的劍,此時擁有的劍的攻擊力為 $\{7,9,10\}$,第 $2$ 條龍生命值為 $5$,故選擇攻擊力為 $7$ 的劍,攻擊 $59$ 次,造成 $413$ 點傷害,此時龍的生命值為 $-408$,恢復 $68$ 次後生命值恰好為 $0$,死亡。
  • 此時擁有的劍的攻擊力為 $\{3,9,10\}$,第 $3$ 條龍生命值為 $7$,故選擇攻擊力為 $3$ 的劍,攻擊 $59$ 次,造成 $177$ 點傷害,此時龍的生命值為 $-170$,恢復 $17$ 次後生命值恰好為 $0$,死亡。
  • 沒有比 $59$ 次更少的通關方法,故答案為 $59$。

第二組資料:

  • 不存在既能殺死第一條龍又能殺死第二條龍的方法,故無法通關,輸出 -1。

範例 2

見選手目錄下的 dragon/dragon2.in 與 dragon/dragon2.ans。

子任務

測試點編號 $n$ $m$ $p_i$ $a_i$ 攻擊力 其他限制
$1,2$ $\le 10^5$ $=1$ $=1$ $\le 10^5$ $=1$ 無
$3,4$ $\le 10^5$ $=1$ $=1$ $\le 10^5$ $\le 10^5$ 無
$5,6,7$ $\le 10^3$ $\le 10^3$ $\le 10^5$ $\le 10^5$ $\le 10^5$ 特性 1、特性 2
$8,9,10,11,12,13$ $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ 特性 1
$14,15$ $=10^5$ $=10^5$ $=1$ $\le 10^8$ $\le 10^6$ 無特殊限制
$16,17$ $\le 10^5$ $\le 10^5$ 所有 $p_i$ 是質數 $\le 10^{12}$ $\le 10^6$ 特性 1
$18,19,20$ $\le 10^5$ $\le 10^5$ 無特殊限制 $\le 10^{12}$ $\le 10^6$ 特性 1

特性 1 是指:對於任意的 $i$,$a_i\le p_i$。

特性 2 是指:$\operatorname{LCM}(p_i)\le 10^6$,即所有 $p_i$ 的最小公倍數不大於 $10^6$。

對於所有的測試點,$T\le 5$,所有武器的攻擊力 $\le 10^6$,所有 $p_i$ 的最小公倍數 $\le 10^{12}$。

說明

你所用到的中間結果可能很大,注意儲存中間結果的變數型別。

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.