Codeforces Round #335 (Div. 2) 606B Testing Robots(模拟)
2 seconds
256 megabytes
standard input
standard output
The Cybernetics Failures (CF) organisation made a prototype of a bomb technician robot. To find the possible problems it was decided to carry out a series of tests. At the beginning of each test the robot prototype will be placed in cell (x0, y0) of
a rectangular squared field of size x × y, after that a mine will be installed into one of the squares of the field. It is
supposed to conduct exactly x·y tests, each time a mine is installed into a square that has never been used before. The starting
cell of the robot always remains the same.
After placing the objects on the field the robot will have to run a sequence of commands given by string s, consisting only of characters
'L', 'R', 'U',
'D'. These commands tell the robot to move one square to the left, to the right, up or down, or stay idle if moving in the given direction is impossible. As
soon as the robot fulfills all the sequence of commands, it will blow up due to a bug in the code. But if at some moment of time the robot is at the same square with the mine, it will also blow up, but not due to a bug in the code.
Moving to the left decreases coordinate y, and moving to the right increases it. Similarly, moving up decreases the x coordinate,
and moving down increases it.
The tests can go on for very long, so your task is to predict their results. For each k from 0 to length(s) your
task is to find in how many tests the robot will run exactly k commands before it blows up.
The first line of the input contains four integers x, y, x0, y0 (1 ≤ x, y ≤ 500, 1 ≤ x0 ≤ x, 1 ≤ y0 ≤ y) —
the sizes of the field and the starting coordinates of the robot. The coordinate axis X is directed downwards and axis Y is
directed to the right.
The second line contains a sequence of commands s, which should be fulfilled by the robot. It has length from 1 to 100 000 characters
and only consists of characters 'L', 'R', 'U',
'D'.
Print the sequence consisting of (length(s) + 1) numbers. On the k-th
position, starting with zero, print the number of tests where the robot will run exactly k commands before it blows up.
3 4 2 2
UURDRDRL
1 1 0 1 1 1 1 0 6
2 2 2 2
ULD
1 1 1 1
In the first sample, if we exclude the probable impact of the mines, the robot's route will look like that:
.
题目链接:点击打开链接
给出地图长宽以及起点, 紧接着给出移动指示, 输出每一步的命令数.
越界或者已经訪问过输出0, 最后一步输出没有訪问过的个数, 其它情况输出1.
AC代码:
#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "queue"
#include "stack"
#include "cmath"
#include "utility"
#include "map"
#include "set"
#include "vector"
#include "list"
#include "string"
using namespace std;
typedef long long ll;
const int MOD = 1e9 + 7;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5 + 5;
int x, y, x3, y3, x2, y2;
bool vis[505][505];
char s[MAXN];
int main(int argc, char const *argv[])
{
scanf("%d%d%d%d", &x, &y, &x3, &y3);
scanf("%s", s);
int len = strlen(s);
x2 = x3, y2 = y3;
printf("1 ");
vis[x2][y2] = true;
for(int i = 0; i < len - 1; ++i) {
int ans;
if(s[i] == 'U') {
if(x2 - 1 < 1) ans = 0;
else if(vis[x2 - 1][y2]) {
ans = 0;
--x2;
}
else {
ans = 1;
vis[--x2][y2] = true;
}
}
else if(s[i] == 'D') {
if(x2 + 1 > x ) ans = 0;
else if(vis[x2 + 1][y2]) {
ans = 0;
++x2;
}
else {
ans = 1;
vis[++x2][y2] = true;
}
}
else if(s[i] == 'L') {
if(y2 - 1 < 1 ) ans = 0;
else if(vis[x2][y2 - 1]) {
ans = 0;
--y2;
}
else {
ans = 1;
vis[x2][--y2] = true;
}
}
else if(s[i] == 'R') {
if(y2 + 1 > y) ans = 0;
else if(vis[x2][y2 + 1]) {
ans = 0;
++y2;
}
else {
ans = 1;
vis[x2][++y2] = true;
}
}
printf("%d ", ans);
}
int num = 0;
for(int i = 1; i <= x; ++i)
for(int j = 1; j <= y; ++j)
if(!vis[i][j]) num++;
printf("%d\n", num);
return 0;
}
Codeforces Round #335 (Div. 2) 606B Testing Robots(模拟)的更多相关文章
- Codeforces Round #335 (Div. 2) B. Testing Robots 水题
B. Testing Robots Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/contest/606 ...
- Codeforces Round #335 (Div. 2)B. Testing Robots解题报告
B. Testin ...
- Codeforces Round #335 (Div. 2) A. Magic Spheres 模拟
A. Magic Spheres Carl is a beginner magician. He has a blue, b violet and c orange magic spheres. ...
- Codeforces Round #368 (Div. 2) B. Bakery (模拟)
Bakery 题目链接: http://codeforces.com/contest/707/problem/B Description Masha wants to open her own bak ...
- Codeforces Round #335 (Div. 2)
水 A - Magic Spheres 这题也卡了很久很久,关键是“至少”,所以只要判断多出来的是否比需要的多就行了. #include <bits/stdc++.h> using nam ...
- Codeforces Round #335 (Div. 2) B
B. Testing Robots time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- Codeforces Round #284 (Div. 2)A B C 模拟 数学
A. Watching a movie time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #285 (Div. 2) A B C 模拟 stl 拓扑排序
A. Contest time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Codeforces Round #335 (Div. 1) C. Freelancer's Dreams 计算几何
C. Freelancer's Dreams Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.codeforces.com/contes ...
随机推荐
- Appium+python自动化-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
- 【JavaScript 8—基础知识点】:DOM
一.总体概述 1.1,什么是DOM DOM(Document Object Model):D(文档):整个web加载的网页文档:O(对象):类似于window对象之类的东西,可以调用属性和方法,在这里 ...
- 九度oj 1011
题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= ...
- SPOJ GSS2 Can you answer these queries II ——线段树
[题目分析] 线段树,好强! 首先从左往右依次扫描,线段树维护一下f[].f[i]表示从i到当前位置的和的值. 然后询问按照右端点排序,扫到一个位置,就相当于查询区间历史最值. 关于历史最值问题: 标 ...
- POJ 1860: Currency Exchange 【SPFA】
套汇问题,从源点做SPFA,如果有一个点入队次数大于v次(v表示点的个数)则图中存在负权回路,能够套汇,如果不存在负权回路,则判断下源点到自身的最长路是否大于自身,使用SPFA时松弛操作需要做调整 # ...
- run as maven build时报错
eclipse中使用maven插件的时候,运行run as maven build的时候报错 -Dmaven.multiModuleProjectDirectory system propery is ...
- Spoj-BITDIFF Bit Difference
Given an integer array of N integers, find the sum of bit differences in all the pairs that can be f ...
- Java线程的学习_线程池
系统启动一个新线程需要很高的成本,因为它涉及与操作系统交互.在这种情况下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时. 线程池在系统启动时即创建大量空闲的线程,程序将 ...
- JavaScript 数组操作函数--转载+格式整理
JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,conc ...
- msp430项目编程36
msp430中项目---sd接口编程36 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结