QOJ.ac

QOJ

시간 제한: 2 s 메모리 제한: 512 MB 총점: 100 난이도: [표시] 해킹 가능 ✓

#1220. Matador de dragões

통계

小D descobriu recentemente um pequeno jogo na Internet. As regras do jogo são as seguintes:

  • O objetivo é matar $n$ dragões, por ordem dos seus números de $1$ a $n$. Cada dragão tem uma quantidade inicial de pontos de vida $a_i$. Cada dragão também tem uma capacidade de regeneração: quando a utiliza, os seus pontos de vida aumentam em $p_i$ de cada vez, até se tornarem não negativos. Só morre depois de terminarem os ataques, quando os seus pontos de vida forem exatamente $0$.
  • No início do jogo, o jogador possui $m$ espadas com poderes de ataque conhecidos. Ao enfrentar cada dragão, só pode escolher uma espada. Depois de matar o dragão, essa espada desaparece, mas o jogador recebe uma espada nova como recompensa.

小D acha este jogo muito aborrecido, mas o jogador que o terminar mais depressa ganha o direito de participar na ION2018. Por isso, 小D decidiu programar um robô simples para a ajudar a terminar o jogo. O robô que programou segue estas regras:

  • Sempre que enfrenta um dragão, o robô escolhe, entre as espadas que possui e cujo poder de ataque não excede os pontos de vida iniciais do dragão, a que tem maior poder de ataque. Se não houver nenhuma espada nessas condições, escolhe a que tem menor poder de ataque.
  • Contra cada dragão, o robô utiliza a espada escolhida no passo anterior para o atacar um número fixo de vezes, $x$, reduzindo os pontos de vida do dragão em $x\times ATK$.
  • Depois disso, o dragão utiliza repetidamente a sua capacidade de regeneração, recuperando $p_i$ pontos de vida de cada vez. Se os seus pontos de vida forem $0$ antes de utilizar essa capacidade ou depois de alguma regeneração, o dragão morre e o jogador passa este nível.

Assim, é evidente que o número de ataques do robô é a chave para determinar se consegue terminar o jogo o mais depressa possível. 小D conhece agora todos os atributos de cada dragão e quer pôr-te à prova: sabes que valor deve atribuir ao número de ataques $x$ do robô para terminar o jogo com o menor número de ataques?

Naturalmente, se nenhum valor permitir terminar o jogo, basta apresentar -1.

Entrada

Lê os dados do ficheiro dragon.in.

A primeira linha contém um inteiro $T$, que representa o número de casos de teste.

Seguem-se $T$ casos de teste, cada um composto por 5 linhas.

  • A primeira linha de cada caso contém dois inteiros, $n$ e $m$, que representam o número de dragões e o número inicial de espadas;
  • A linha seguinte contém $n$ inteiros positivos; o $i$-ésimo é o número inicial de pontos de vida $a_i$ do $i$-ésimo dragão;
  • A linha seguinte contém $n$ inteiros positivos; o $i$-ésimo representa a capacidade de regeneração $p_i$ do $i$-ésimo dragão;
  • A linha seguinte contém $n$ inteiros positivos; o $i$-ésimo representa o poder de ataque da espada recebida como recompensa por matar o $i$-ésimo dragão;
  • A linha seguinte contém $m$ inteiros positivos, que representam os poderes de ataque das $m$ espadas possuídas inicialmente.

Saída

Escreve a saída no ficheiro dragon.out.

Apresenta $T$ linhas no total.

A linha $i$ deve conter um inteiro: o menor número de ataques $x$ que permite ao robô terminar o jogo no $i$-ésimo caso de teste. Se não existir resposta, apresenta -1.

Exemplos

Entrada 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

Saída 1

59
-1

Explicação do exemplo 1

Primeiro caso de teste:

  • Inicialmente, os poderes de ataque das espadas são $\{1,9,10\}$. O primeiro dragão tem $3$ pontos de vida, pelo que se escolhe a espada com poder de ataque $1$. Atacando $59$ vezes, causam-se $59$ pontos de dano e os pontos de vida do dragão tornam-se $-56$. Depois de regenerar $14$ vezes, os seus pontos de vida são exatamente $0$ e ele morre.
  • A espada com poder de ataque $1$ desaparece e obtém-se uma espada com poder de ataque $7$. Os poderes de ataque das espadas são agora $\{7,9,10\}$. O segundo dragão tem $5$ pontos de vida, pelo que se escolhe a espada com poder de ataque $7$. Atacando $59$ vezes, causam-se $413$ pontos de dano e os pontos de vida do dragão tornam-se $-408$. Depois de regenerar $68$ vezes, os seus pontos de vida são exatamente $0$ e ele morre.
  • Os poderes de ataque das espadas são agora $\{3,9,10\}$. O terceiro dragão tem $7$ pontos de vida, pelo que se escolhe a espada com poder de ataque $3$. Atacando $59$ vezes, causam-se $177$ pontos de dano e os pontos de vida do dragão tornam-se $-170$. Depois de regenerar $17$ vezes, os seus pontos de vida são exatamente $0$ e ele morre.
  • Não existe forma de terminar o jogo com menos de $59$ ataques, pelo que a resposta é $59$.

Segundo caso de teste:

  • Não existe forma de matar tanto o primeiro como o segundo dragão, pelo que não se pode terminar o jogo. A saída é -1.

Exemplo 2

Consulta os ficheiros dragon/dragon2.in e dragon/dragon2.ans no diretório dos concorrentes.

Subtarefas

Número do teste $n$ $m$ $p_i$ $a_i$ Poder de ataque Outras restrições
1 $\le 10^5$ $=1$ $=1$ $\le 10^5$ $=1$ Nenhuma
2 $\le 10^5$ $=1$ $=1$ $\le 10^5$ $\le 10^5$ Nenhuma
3 $\le 10^5$ $=1$ $=1$ $\le 10^5$ $\le 10^5$ Nenhuma
4 $\le 10^5$ $=1$ $=1$ $\le 10^5$ $\le 10^5$ Nenhuma
5 $\le 10^3$ $\le 10^3$ $\le 10^5$ $\le 10^5$ $\le 10^5$ Propriedades 1 e 2
6 $\le 10^3$ $\le 10^3$ $\le 10^5$ $\le 10^5$ $\le 10^5$ Propriedades 1 e 2
7 $\le 10^3$ $\le 10^3$ $\le 10^5$ $\le 10^5$ $\le 10^5$ Propriedades 1 e 2
8 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
9 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
10 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
11 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
12 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
13 $=1$ $=1$ $\le 10^8$ $\le 10^8$ $\le 10^6$ Propriedade 1
14 $=10^5$ $=10^5$ $=1$ $\le 10^8$ $\le 10^6$ Sem restrições especiais
15 $=10^5$ $=10^5$ $=1$ $\le 10^8$ $\le 10^6$ Sem restrições especiais
16 $\le 10^5$ $\le 10^5$ Todos os $p_i$ são primos $\le 10^{12}$ $\le 10^6$ Propriedade 1
17 $\le 10^5$ $\le 10^5$ Todos os $p_i$ são primos $\le 10^{12}$ $\le 10^6$ Propriedade 1
18 $\le 10^5$ $\le 10^5$ Sem restrições especiais $\le 10^{12}$ $\le 10^6$ Propriedade 1
19 $\le 10^5$ $\le 10^5$ Sem restrições especiais $\le 10^{12}$ $\le 10^6$ Propriedade 1
20 $\le 10^5$ $\le 10^5$ Sem restrições especiais $\le 10^{12}$ $\le 10^6$ Propriedade 1

A propriedade 1 significa que, para qualquer $i$, $a_i\le p_i$.

A propriedade 2 significa que $\operatorname{LCM}(p_i)\le 10^6$, isto é, o mínimo múltiplo comum de todos os $p_i$ não excede $10^6$.

Para todos os testes, $T\le 5$, o poder de ataque de todas as armas é $\le 10^6$, e o mínimo múltiplo comum de todos os $p_i$ é $\le 10^{12}$.

Dica

Os resultados intermédios que utilizares podem ser muito grandes. Presta atenção ao tipo das variáveis em que os guardas.

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.