round190(DIV1) pA

来源:互联网 发布:mysql 创建用户 编辑:程序博客网 时间:2024/06/08 06:18

LIINK:http://codeforces.com/problemset/problem/321/A

坑爹的一题,细节很多,主要的思路就是找周期(就是一轮过后的偏移量),然后遍历一次第一轮中每一个点的n周期是否可以达到目标点

code:

#include<stdio.h>#include<climits>#include<algorithm>#include<stack>#include<iostream>#include<cmath>#include<set>#include<vector>#include<map>#include<queue>#include<string.h>using namespace std;typedef struct node{  int x;  int y;}node;node c[150];int  main(void){  int a,b; char s[150]; while(scanf("%d %d",&a,&b)!=EOF) {    getchar();    scanf("%s",s);    if(a==0&&b==0)     {    printf("Yes\n");    continue;        }    c[0].x=c[0].y=0;    for(int i=0;i<strlen(s);i++)    {  if(s[i]=='U')   { c[i+1].y=c[i].y+1; c[i+1].x=c[i].x;  }  if(s[i]=='D')  {       c[i+1].y=c[i].y-1;       c[i+1].x=c[i].x;  }  if(s[i]=='L')   {c[i+1].x=c[i].x-1;c[i+1].y=c[i].y;  }  if(s[i]=='R')   { c[i+1].x=c[i].x+1;c[i+1].y=c[i].y;  }}//int dx=c[strlen(s)].x;int dy=c[strlen(s)].y;int ok=0;//cout<<c[2].x<<" "<<c[2].y;for(int i=1;i<=strlen(s);i++){   if(dx!=0&&dy!=0)   {   if(((a-c[i].x)%dx==0)&&((a-c[i].x)/dx>=0)&&((a-c[i].x)/dx*dy==(b-c[i].y)))   {  ok=1;  break;       }   }   else if(dx==0&&dy!=0)   {         if(a!=c[i].x)          {         continue;       }       else        {             if((b-c[i].y)%dy==0&&(b-c[i].y)/dy>=0)             {         ok=1;         break;      }          }      }      else if(dx!=0&&dy==0)      {         if(b!=c[i].y)           continue;              else               {           if((a-c[i].x)%dx==0&&(a-c[i].x)/dx>=0)   {    ok=1;    break;  }    }   }       else if(dx==0&&dy==0)       {        if(a==c[i].x&&b==c[i].y)        { ok=1; break;          }          }}if(ok) printf("Yes\n");else printf("No\n"); }   return 0;}




0 0
原创粉丝点击