QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 1024 MB Total points: 100

#3008. Aéroglisseur propulsé par des fusées

Statistics

Vous programmez un aéroglisseur autonome propulsé par des fusées. Le véhicule peut se déplacer très, très vite, mais il lui est difficile de tourner. Puisqu'il est en sustentation, il tourne en activant des propulseurs directionnels, qui font tourner le véhicule aussi bien lorsqu'il avance que lorsqu'il est immobile.

Le désert de sel où vous effectuez vos essais a été cartographié à l'aide d'une grille cartésienne $\text{2D}$. L'aéroglisseur part de la position $(0,0)$ sur cette grille, orienté dans la direction positive de l'axe $X$. Votre tâche consiste à amener le véhicule à une autre position $(x,y)$ du désert de sel.

L'aéroglisseur a une vitesse au sol fixe de $v$ miles par seconde et une vitesse de rotation fixe de $w$ radians par seconde. Grâce à la puissance des fusées, tant pour accélérer que pour ralentir, il peut atteindre sa vitesse maximale quasiment instantanément et s'arrêter depuis cette vitesse tout aussi rapidement. De même, il peut commencer à tourner à sa vitesse de rotation fixe instantanément et arrêter de tourner tout aussi rapidement. Il peut tourner dans le sens horaire ou antihoraire.

Vous devez déterminer le temps minimal nécessaire pour que le véhicule atteigne sa cible. Le programme qui contrôle le véhicule peut démarrer le mouvement vers l'avant, arrêter ce mouvement, démarrer la rotation et arrêter la rotation, chaque action exactement une fois. Notez que le démarrage ou l'arrêt du mouvement vers l'avant peut être indépendant du démarrage ou de l'arrêt de la rotation.

Entrée

Chaque cas de test comporte exactement deux lignes.

La première ligne contient deux entiers séparés par un espace, $x$ et $y$ ($−1,000 \leq x, y \leq 1,000,(x,y)\ne(0,0)$), qui indiquent la position sur la grille du désert de sel que vous cherchez à atteindre, en miles.

La deuxième ligne de l'entrée contient deux nombres réels séparés par un espace et ayant exactement deux chiffres après la virgule : $v$ ($0.01 \leq v \leq 10.00$) et $w$ ($0.01 \leq w \leq 10.00$), où $v$ est la vitesse de déplacement fixe en miles par seconde et $w$ est la vitesse de rotation fixe dans l'un ou l'autre sens, en radians par seconde.

Sortie

Affichez un seul nombre réel : le temps minimal (en secondes) nécessaire pour que l'aéroglisseur aille de $(0,0)$ à $(x,y)$ en respectant les contraintes. Votre réponse sera acceptée si son erreur absolue ne dépasse pas $10^{−3}$.

Exemples

Entrée 1

20 0
1.00 0.10

Sortie 1

20.00000000

Entrée 2

-10 10
10.00 1.00

Sortie 2

3.14159265

Entrée 3

0 20
1.00 0.10

Sortie 3

28.26445910

Entrée 4

-997 -3
5.64 2.15

Sortie 4

177.76915187

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.