QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100 Hackable ✓

#9686. Soldats

Statistics

$n$ soldats sont alignés. Initialement, le soldat numéro $i$ possède $a_i$ points de vie.

Vous pouvez effectuer plusieurs attaques, ou aucune. À chaque attaque, vous choisissez un intervalle $[l,r]$ avec $1\le l\le r\le n$ et diminuez de $1$ les points de vie de tous les soldats dont le numéro appartient à cet intervalle. Chaque attaque coûte $m$.

Après toutes les attaques, si le soldat numéro $i$ possède au plus $0$ point de vie, vous obtenez un gain de $b_i$. Les soldats mêlant ennemis et alliés, $b_i$ peut être négatif. Notez que le gain associé à chaque soldat ne peut être obtenu qu'une fois.

Vous devez trouver une stratégie d'attaque maximisant le total des gains moins le total des coûts. Formellement, supposons que votre stratégie effectue $k$ attaques et que le soldat numéro $i$ possède finalement $c_i$ points de vie. Posons $p_i=1$ si $c_i\le0$, et $p_i=0$ sinon. Vous devez maximiser $\left(\sum_{i=1}^{n}p_i\times b_i\right)-m\times k$. Il suffit de donner la valeur maximale du total des gains moins le total des coûts.

Entrée

Les données sont lues dans le fichier soldier.in.

Il y a plusieurs cas de test.

La première ligne contient un entier positif $T$, le nombre de cas de test.

Les cas de test sont ensuite donnés dans l'ordre. Pour chacun :

La première ligne contient deux entiers $n,m$, respectivement le nombre de soldats et le coût d'une attaque.

Chacune des $n$ lignes suivantes contient deux entiers $a_i,b_i$, décrivant respectivement les points de vie et le gain associés à un soldat.

Sortie

Écrivez dans le fichier soldier.out.

Pour chaque cas de test, écrivez une ligne contenant un entier : la valeur maximale, parmi toutes les stratégies possibles, du total des gains moins le total des coûts.

Exemples

Entrée 1

3
5 1
1 3
2 5
1 4
3 3
5 1
3 2
1 5
1 -100
1 5
3 2
1 5
1 -1
1 5

Sortie 1

12
6
7

Remarque

Dans le premier cas de test, une stratégie optimale consiste à effectuer trois attaques, sur les intervalles $[1,5]$, $[2,4]$ et $[4,4]$. La suite finale des points de vie est $(0,0,-1,0,4)$, le gain est $b_1+b_2+b_3+b_4=15$ et le coût est $3\times1=3$. On peut démontrer qu'aucune stratégie n'est meilleure. La sortie est donc $15-3=12$.

Dans le deuxième cas de test, une stratégie optimale consiste à effectuer deux attaques, sur les intervalles $[1,1]$ et $[3,3]$.

Dans le troisième cas de test, une stratégie optimale consiste à effectuer une attaque sur l'intervalle $[1,3]$.

Sous-tâches

Notons $\sum n$ la somme des valeurs de $n$ de tous les cas de test d'un même fichier de test. Pour toutes les données, on garantit :

  • $1\le T\le5\times10^5$ ;
  • $1\le n,\sum n\le5\times10^5$, $1\le m\le10^9$ ;
  • Pour tout $1\le i\le n$, $1\le a_i\le10^9$ et $-10^9\le b_i\le10^9$.
Numéro de sous-tâche Points $\sum n\le$ Propriété particulière
1 5 $5\times10^5$ Pour tout $1\le i\le n$, $b_i\ge0$
2 15 $5000$ Pour tout $1\le i\le n$, $a_i\le5000$
3 20 Aucune
4 $10^5$
5 25 $2\times10^5$
6 15 $5\times10^5$

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.