Formula Racing
Time Limit: 1000MS   Memory Limit: 30000K
Total Submissions: 289   Accepted: 77

Description

Background
The brand new formula racing team Irarref needs your help! Irarref
doesn't have any real good drivers but they want to dominate formula
racing. Since fairness doesn't mean anything to them they are trying to
build a fully automatic driving control which needs almost no driver
interaction.

Before actually trying the automatic driving control on track and
risking to crash their precious cars (they don't care much about their
drivers), they want to test it in a computer simulation.

Problem

You have to simulate the movement of a car on a given track. To
simplify the problem, cars can only move in 8 directions (horizontal,
vertical, and diagonal) on cells of a regular 2-dimensional grid, where
directions are encoded as follows:

701

6 2

543

Every turn the car executes exactly one of the following commands:

command description
move-on keep moving with the current speed and direction
accelerate increase the speed by 1
brake decrease the speed by 1 (does not go below 0!)
left turn 45 degrees left (decrease direction by 1)
right turn 45 degrees right (increase direction by 1)

In any case, a car moves its speed value in cells in its current
direction and crosses all cells in-between its old and new position.
When a car accelerates or brakes, its speed is adjusted before the
movement of the current turn. When a car turns, its direction is changed
before the movement.

The racing track is a 2-dimensional regular grid, where every cell
can be: road, non-road space (but still drivable), start/goal line (also
road and drivable), or wall.

Every car starts with an initial speed of 0 and has a maximum speed
which it cannot exceed. When a car hits non-road space its speed is
reduced to 1 in the next turn but it completes the move of this turn
with its current speed. When a car hits a wall it crashes, the
simulation stops immediately and there will be no next turn.

Every car is alone on the track, so you do not have to check for car/car collisions.

Input

The first line contains the number of scenarios.

For each scenario, the first line contains width w and height h of
the racing track (1 <= w, h <= 1000).The following h lines contain
the layout of the racing track where road, non-road-space, start/goal
line, and wall are represented by "x", ".", "s", and "W", respectively.
The upper left corner of the racing area is (0, 0), the lower right
corner (w-1, h-1), where coordinates are given as pairs (x, y) where
x-direction is horizontal and y-direction is vertical.

A line containing the number n of cars to simulate follows the track description. For every car there are two lines:

  • a line containing the initial x- and y-coordinate x and y,
    direction d, and maximum speed m of the car, as integers separated by
    single blanks, where 0 <= x <= w-1, 0 <= y <= h-1, 0 <= d
    <= 7, 1 <= m
  • a line containing a string whose single characters each
    encode one command for this car, where "m","a", "b", "l", and "r"
    represent move-on, accelerate, brake, left, and right, respectively; the
    number of commands for a car is at least 1 and at most 10000.

It is guaranteed that the initial car position is not on a wall. It
is also guaranteed that the car does not leave the track area without
crashing.

Output

The
output for every scenario begins with a line containing "Scenario #i:",
where i is the number of the scenario starting at 1. For every scenario
print for ever car the following information:

  • If the car did not crash print a line containing the final
    position (x- and y-coordinate), direction and speed of the car, all
    separated by single spaces.If the car did crash print a line containing
    the crash-point (x- and y-coordinate), direction and speed of the car at
    the moment of the crash and the word "crashed", all separated by single
    spaces.
  • For every hit of a start/goal field (a hit is counted when
    moving onto a start/goal field) print a line beginning with "crossing
    startline:", followed by a single space, the x- and
    y-coordinates,direction, speed and the number of the simulation turn the
    line was crossed or hit. The lines must be printed in the same order
    the start/goal fields were hit.

Print a blank line after each scenario.

Sample Input

1
12 12
WWWWWWWWWWWW
W...xxxx...W
W..xxxxxx..W
W.xxWWWWxx.W
WxxWW..WWxxW
WxxW....WxxW
WssW....WxxW
WxxWW..WWxxW
W.xxWWWWxx.W
W..xxxxxx..W
W...xxxx...W
WWWWWWWWWWWW
2
1 6 0 3
armmrarrmrrrbrmmb
1 5 0 4
ararmrramrmar

Sample Output

Scenario #1:
2 4 0 0
crossing startline: 2 6 0 1 13
5 11 5 2 crashed

Source

TUD Programming Contest 2004, Darmstadt, Germany

[Submit]   [Go Back]   [Status]   [Discuss]

英文阅读题。1h读懂题,10min写完。

纯模拟,看网上没有代码就发一份吧。

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int N=;
int n,m,T,mx,tot,times,x,y,d,mn,speed,len;
char op[N],mp[N][N];
const int dx[]={,,,,,-,-,-},dy[]={-,-,,,,,,-};
struct P{ int x,y,d,speed,id; }p[N*N]; void up(int &x){ if (x<mx) x++; }
void dn(int &x){ if (x) x--; } int main(){
scanf("%d",&T);
for (int cas=; cas<=T; cas++){
scanf("%d%d",&n,&m); printf("Scenario #%d:\n",cas);
for (int i=; i<n; i++) scanf("%s",mp[i]);
scanf("%d",&times);
for (int tt=; tt<times; tt++){
scanf("%d%d%d%d",&x,&y,&d,&mx);
speed=tot=; bool cr=;
scanf("%s",op); len=strlen(op);
for (int i=; i<len; i++){
if (op[i]=='a') up(speed);
if (op[i]=='b') dn(speed);
if (op[i]=='l') d=(d+)%;
if (op[i]=='r') d=(d+)%;
bool flag=;
for (int j=; j<speed; j++){
x+=dx[d]; y+=dy[d];
if (mp[y][x]=='.') flag=;
if (mp[y][x]=='W') { printf("%d %d %d %d crashed\n",x,y,d,speed); cr=; break; }
if (mp[y][x]=='s') p[tot++]=(P){x,y,d,speed,i};
}
if (flag) speed=;
if (cr) break;
}
if (!cr) printf("%d %d %d %d\n",x,y,d,speed);
for (int i=; i<tot; i++) printf("crossing startline: %d %d %d %d %d\n",p[i].x,p[i].y,p[i].d,p[i].speed,p[i].id);
}
puts("");
}
return ;
}

[POJ1801]Formula Racing(模拟)的更多相关文章

  1. POJ 3672 Long Distance Racing (模拟)

    题意:给定一串字符,u表示是上坡,d表示下坡,f表示平坦的,每个有不同的花费时间,问你从开始走,最远能走到. 析:直接模拟就好了,没什么可说的,就是记下时间时要记双倍的,因为要返回来的. 代码如下: ...

  2. PKUSC2018训练日程(4.18~5.30)

    (总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZO ...

  3. HOJ题目分类

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  4. Lucky and Good Months by Gregorian Calendar - POJ3393模拟

    Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Description Have ...

  5. (转) Deep Reinforcement Learning: Playing a Racing Game

    Byte Tank Posts Archive Deep Reinforcement Learning: Playing a Racing Game OCT 6TH, 2016 Agent playi ...

  6. HDUOJ-------1052Tian Ji -- The Horse Racing(田忌赛马)

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

  7. poj1472[模拟题]

    Instant Complexity Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2017   Accepted: 698 ...

  8. HDU 5912 Fraction 【模拟】 (2016中国大学生程序设计竞赛(长春))

    Fraction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  9. HUNNU11342:Chemistry(模拟)

    http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11342 Problem description The ch ...

随机推荐

  1. 使用JMeter进行一次简单的带json数据的post请求测试

    使用JMeter进行一次简单的带json数据的post请求测试 原文:https://www.cnblogs.com/summer-mm/p/7717812.html 1.启动jmeter:在bin下 ...

  2. 如何使用Navicat恢复数据库脚本

    Navicat 可以做数据库备份,当然也可以做数据库脚本恢复了.操作很简单. 1.连接需要恢复的数据库.鼠标右键点击,选择[运行SQL文件] 2.在弹出的窗口中选择sql文件,继续下一步即可. 余不赘 ...

  3. WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ

    之前曾经写过一个关于MSMQ消息队列的文章:WCF分布式开发必备知识(1):MSMQ消息队列 ,当时的目的也是用它来作为学习WCF 消息队列MSMQ编程的基础文章.在那篇文章里,我们详细介绍了MSMQ ...

  4. 1040: [ZJOI2008]骑士~基环外向树dp

    Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中 ...

  5. codeforces 110E Lucky Tree

    传送门:https://codeforces.com/contest/110/problem/E 题意:给你一颗树,节点与节点之间的边有一个边权,定义只由4和7组成的数字是幸运数字,现在要你求一共有多 ...

  6. BZOJ 2457 双端队列(思维

    2457: [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 582  Solved: 253[Submit][Sta ...

  7. 转载:Java中的String与常量池

    转载自http://developer.51cto.com/art/201106/266454.htm.感觉总结的不错,自己收藏一下. string是java中的字符串.String类是不可变的,对S ...

  8. Spring Framework框架解析(1)- 从图书馆示例来看xml文件的加载过程

    引言 这个系列是我阅读Spring源码后的一个总结,会从Spring Framework框架的整体结构进行分析,不会先入为主的讲解IOC或者AOP的原理,如果读者有使用Spring的经验再好不过.鉴于 ...

  9. mysql5.7.11安装遇到的问题

    首次安装mysql5.7.11绿色版,真是破费功夫,现记录安装中遇到的问题,只是解决了问题,而不清楚问题的由来. 问题一: 问题二: 问题三: 问题四: 我的my.ini配置文件: [mysql] # ...

  10. 让你的软件飞起来:RGB转为YUV【转】

    转自:http://blog.csdn.net/wxzking/article/details/5905195 版权声明:本文为博主原创文章,未经博主允许不得转载. 朋友曾经给我推荐了一个有关代码优化 ...