CodeForces 321 A - Ciel and Robot

题目链接】:click here~~

题目大意】:一个robot 机器人 ,可以根据给定的指令行动,给你四种指令,robot初始位置是(0,0),指令一出,robot会重复行动,判断能否在无限行动的情况下经过点(n,m)。

解题思路】其实仔细模拟一下,可以发现是有周期的,判断即可,见代码吧~~

代码:

#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>

using namespace std;

const int N=105;
int n,m,c,t,ans,res,tmp;
char str[N];
int X[N],Y[N];

int main()
{
    int x,y;
    while(~scanf("%d%d",&x,&y))
    {
        memset(X,0,sizeof(X));
        memset(Y,0,sizeof(Y));
        scanf("%s",str+1);
        int len=strlen(str+1);
        if(x==0&&y==0){
            puts("Yes");
            return 0;
        }
        else{
            bool flag=0;
            int j=0,xx=x;
            int yy=y;
            int uu=0,dd=0,ll=0,rr=0;
            for(int i=0; i<=len; ++i){
                switch (str[i]){
                case 'U':
                    X[i]=X[i-1],Y[i]=Y[i-1]+1;///y[0]=1;
                    break;
                case 'D':
                    X[i]=X[i-1],Y[i]=Y[i-1]-1;
                    break;
                case 'L':
                    X[i]=X[i-1]-1,Y[i]=Y[i-1];
                    break;
                case 'R':
                    X[i]=X[i-1]+1,Y[i]=Y[i-1];///X[0]=1,
                    break;
                }

                /*  if(str[i]=='U')
                  {
                      X[i]=X[i-1],Y[i]=Y[i-1]+1;   ///  uu++;///yy+=1
                  }
                  else if(str[i]=='D')
                  {
                      X[i]=X[i-1],Y[i]=Y[i-1]-1;    /// dd++;///yy-=1
                  }
                  else if(str[i]=='L')
                  {
                      X[i]=X[i-1]-1,Y[i]=Y[i-1];    ///  ll++;///xx-=1
                  }
                  else
                  {
                      X[i]=X[i-1]+1,Y[i]=Y[i-1];    ///xx+=1
                  }
                  */
            }
            int zq;
            for(int i=0; i<=len; ++i){//2 2
                int za=xx-X[i];///2-X[0]=1,
                int zb=yy-Y[i];///2-Y[0]=1,
                zq=(X[len]!=0?za/X[len]:(Y[len]!=0?zb/Y[len]:1));
                if(X[len]*zq==za&&Y[len]*zq==zb&&zq>=0)
                ///if(zq>=0){
                    puts("Yes");
                    return 0;
                }
            }
            puts("No");
        }
    }
    return 0;
}
/*
2 2
RU
1 2
RU
-1 1000000000
LRRLU
0 0
D

Yes
No
Yes
Yes
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 00:11:55

CodeForces 321 A - Ciel and Robot的相关文章

CodeForces 321A Ciel and Robot(数学模拟)

题目链接:http://codeforces.com/problemset/problem/321/A 题意:在一个二维平面中,開始时在(0,0)点,目标点是(a.b),问能不能通过反复操作题目中的指令,从原点移动到目标点. 分析:如果一次完毕全部的命令后.移动到了(xx,yy),而且从(Xi.Yi)反复操作k次指令到达目标点.则能够列出方程 Xi + k * xx = a && Yi + k * yy = b.然后解出k.推断k是否大于等于0就可以. #include <cstdi

Codeforces 321A Ciel and Robot 枚举答案

题目链接 枚举机器人走的最后一步,用终点坐差后计算周期次数 trick:周期次数要>=0 #include <iostream> #include <string> #include <vector> #include <cstring> #include <cstdio> #include <map> #include <queue> #include <algorithm> #include <

网络流(费用流)CodeForces 321B:Ciel and Duel

Fox Ciel is playing a card game with her friend Jiro. Jiro has n cards, each one has two attributes: position (Attack or Defense) and strength. Fox Ciel has m cards, each one has these two attributes too. It's known that position of all Ciel's cards

Codeforces 1296C - Yet Another Walking Robot

题目大意: 给定一个机器人的行走方式 你需要取走一段区间 但要保证取走这段区间后机器人最终到达的终点位置是不变的 问这段区间最短时是哪一段 解题思路: 易得,如果重复走到了某些已经走过的点,那么肯定就有一段区间可以被删除 但是行走次数最大有2e5,即用数组记录坐标状态的话起码要开4e5*4e5的空间,显然不可能 所以可以用map储存上一次走到某个坐标是第几步 那么每次只要判断当前的坐标是否已经被走过即可,走过的话就尝试更新答案 因为map中未调用过的int值为0 所以让原点的步数设置为1防止混淆

codeforces round #321 (div2)

codeforces#321(div2) A题:水题. #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) using namespace std; typedef long long ll; const int maxn=1000100; ll n,a[maxn]; int main() { //freopen("in.txt","r",stdin); while(ci

codeforces510B

Fox And Two Dots CodeForces - 510B Fox Ciel 正在玩一个手机拼图游戏,被称之为 "Two Dots".基础关卡是在一个大小为 n × m的棋盘上游戏,类似于这样: 每个单元格包含了一个具有某种颜色的点.我们将使用不同的大写拉丁字符,表示不同的颜色. 这个游戏的关键是,找到同色环.例如,考虑图上的 4 个蓝色点,它们形成了一个环.正式地,我们将一个点序列 d1, d2, ..., dk 称作一个环 ,当且仅当它满足以下的条件: 这 k 个点不同:

Codeforces 321E Ciel and Gondolas

传送门:http://codeforces.com/problemset/problem/321/E [题解] 首先有一个$O(n^2k)$的dp. # include <stdio.h> # include <string.h> # include <iostream> # include <algorithm> // # include <bits/stdc++.h> using namespace std; typedef long lon

Codeforces 583 DIV2 Robot&#39;s Task 贪心

原题链接:http://codeforces.com/problemset/problem/583/B 题意: 就..要打开一个电脑,必须至少先打开其他若干电脑,每次转向有个花费,让你设计一个序列,使得总花费最小. 题解: 就傻傻的走就好..从左走到右,再走回来,更新序列和答案就好. 代码: #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> #define MA

CodeForces 321C Ciel the Commander

Ciel the Commander Time Limit: 1000ms Memory Limit: 262144KB This problem will be judged on CodeForces. Original ID: 321C64-bit integer IO format: %I64d      Java class name: (Any) Now Fox Ciel becomes a commander of Tree Land. Tree Land, like its na