zoukankan      html  css  js  c++  java
  • AtCoder Regular Contest 069 D

    arc069.contest.atcoder.jp/tasks/arc069_b

    题意:一堆不明身份的动物排成一圈,身份可能是羊或狼,羊一定说实话,狼一定说假话。大家各自报自己的两边是同类还是不同类,问能否有一种满足每个人发言的方式。

    解法:已知i-1和i-2可以推i,所以枚举起点羊羊、羊狼、狼羊、狼狼四种可能,最后拿第0只以及第n-1只动物的发言判断是否合法就行。

     1 #include <cstdio>
     2 int n;
     3 char s[100001],r[100001];
     4 bool c(char a,char b)
     5 {
     6     r[0]=a;
     7     r[1]=b;
     8     for (int i=2; i<n; ++i)
     9 r[i]=r[i-1]=='S'?s[i-1]=='o'?r[i-2]:r[i-2]=='S'?'W':'S':s[i-1]=='x'?r[i-2]:r[i-2]=='S'?'W':'S';
    10     return !(r[n-1]=='S'&&((s[n-1]=='o'&&r[n-2]!=r[0])||(s[n-1]=='x'&&r[n-2]==r[0])))&&
    11            !(r[0]=='S'&&((s[0]=='o'&&r[1]!=r[n-1])||(s[0]=='x'&&r[1]==r[n-1])))&&
    12            !(r[n-1]=='W'&&((s[n-1]=='x'&&r[n-2]!=r[0])||(s[n-1]=='o'&&r[n-2]==r[0])))&&
    13            !(r[0]=='W'&&((s[0]=='x'&&r[1]!=r[n-1])||(s[0]=='o'&&r[1]==r[n-1])));
    14 }
    15 int main()
    16 {
    17     scanf("%d%s",&n,s);
    18     puts(c('S','W')||c('W','S')||c('W','W')||c('S','S')?r:"-1");
    19     return 0;
    20 }
  • 相关阅读:
    vue 交互 跨域获取数据
    计算属性computed缓存 与 methods 的思考
    _this 与 this
    python 占位符 %s Format
    odoo 中字段属性对象Field
    安装CentOS7.7图解
    docker的volumes
    Docker常用命令详解
    Ubuntu修改时区和更新时间
    SqlServer创建时间维度
  • 原文地址:https://www.cnblogs.com/YingZhixin/p/6496169.html
Copyright © 2011-2022 走看看