题意:给定两个小球,两个球都有固定的运动轨道,分别由两个等长的方向字符串给出(N,S,W,E代表四个方向),试问能否有一个运动序列(即由N,S,W,E组成),使得两个小球按着这个序列运动到最后时刻都处于各自运动轨道的终点,(若当前运动的方向在此小球的轨道上不允许,则小球不做任何动作)。

分析:这题是思维题,有个结论:把其中一个小球轨道全部置反(方向和左右),则若新轨道的前缀与另外一个轨道的后缀有相同的部分(任意长度),则必不能找到可行的运动序列。为什么?若两个小球的轨道满足这个条件,因为轨道不同,则两个小球必不可能同时到达各自运动的终点,设球 a 先到达终点了,则接下来因为要使球 b 也到达终点,所以必须走轨道 b,而轨道 b 的末尾又是轨道 a 末尾的置反,即相当于再把轨道 a 的末尾反走一遍,则球 a 一定会离开终点。所以找不到满足条件的序列。

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;const int N = 1e6+10;char a[N],b[N];
int nxt[N];
int n;void GetNext(char s[],int n,int nxt[])
{nxt[0]=-1;int j=0,k=-1;while(j<n){if(k==-1||s[j]==s[k]){++j,++k; nxt[j]=k;}else{k=nxt[k];}}
}bool KMP(char a[],char b[],int n)
{int i=0,j=0;while(i<n){if(j==-1||a[i]==b[j]){++i,++j;}else{j=nxt[j];}}return j>=1;
}int main()
{scanf("%d",&n);scanf("%s%s",a,b);n--;for(int i=0;i<n;i++){if(b[i]=='N') b[i]='S';else if(b[i]=='S') b[i]='N';else if(b[i]=='W') b[i]='E';else b[i]='W';}for(int i=0;i<n/2;i++)swap(b[i],b[n-i-1]);b[n]='\0';GetNext(b,n,nxt);if(KMP(a,b,n)) puts("NO");else puts("YES");
} 

CodeForces-608E(Marbles)相关推荐

  1. Codeforces 1215E. Marbles

    传送门 注意到 $a$ 的值的数量并不大,考虑状压 $dp$ 设 $f[S]$ 表示此时确定的数集合为 $S$ ,且按某种顺序从数列开头排列完成的最小交换次数 那么每个状态枚举最后一个填的数,加上代价 ...

  2. Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...

  3. Marbles CodeForces - 1215E 状态压缩dp

    问题: Monocarp has arranged nn colored marbles in a row. The color of the ii-th marble is aiai. Monoca ...

  4. Codeforces Round #585 (Div. 2)E. Marbles(状压dp)

    https://codeforces.com/contest/1215/problem/E cnt[x][j]表示把x这种颜色全放到j这种颜色前面所需要的交换次数. 其实这题跟上一篇博客那题是同一个套 ...

  5. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  6. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  7. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  8. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  9. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  10. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

最新文章

  1. 基于Pytorch和RDKit建立QSAR模型
  2. python中有很多包管理工具、以下哪种不是_python试卷_共4页
  3. Python 列表元组字典集合
  4. android蓝牙串口 hc06,Android手机通过蓝牙模块HC-06连接Arduino串口输出
  5. 茜在人名可以读xi吗_甘肃中专学校:初中毕业可以读大专吗?
  6. 哥哥对弟弟说的s9t9太空堡垒
  7. 鸿蒙系统和中标麒麟系统关系,操作系统有哪些 先有鸿蒙后有麒麟V10 为5G时代量身定做...
  8. 【Caffe】利用log文件绘制loss和accuracy(转载)
  9. express基本原理
  10. 控制图的绘制步骤_实战!脚手架排布图绘制步骤和技巧讲解!图文展示
  11. 使用CultureInfo来显示中文星期
  12. web-jsp 购物车(2)
  13. Android面试心得,已拿到字节跳动,京东,android应用开发基础学堂在线答案
  14. 【磨刀不误砍柴工】keil软件仿真评估代码运行时间
  15. 90后在虚拟世界建国风园林,完美融合数字艺术与传统诗词
  16. Liunx教程超详细(完整)
  17. 跳跳棋(国家集训队,LCA,洛谷P1852,BZOJ[2144])
  18. ##iOS中的微信支付 支付验证签名失败
  19. css文本溢出时候,如何把多余的文字显示省略号
  20. 中国武术高手要在郑州开比武大会?还请了马云做裁判?

热门文章

  1. 客官请留步!年销千万台的智能香薰加湿器震撼来袭
  2. 20230323英语学习
  3. ffplay 播放字幕以及lrc歌词
  4. 英文写作中表达“有关的”的单词related 、associated 、relevant 等的用法
  5. python实战——针对抽奖系统奖池数据概率的计算
  6. 思科AP1832me和2702升级记录
  7. 赛狐ERP:亚马逊卖家注意了!9月1日起,FBA配送将全面更新啦~
  8. Kerberoast
  9. 合泰单片机 | HT66F3195 | 个人库开发过程 | 【3】芯片基础属性
  10. Think Python 第四章 接口设计 导入Swampy模块