比较友好的一道交互题.

想出来还是蛮开心的.

对于第一个位置先猜 $A$ 和 $B$,然后有一个合法的话猜 $A$,否则去猜 $X$,$Y$ 其中的一个.

由于题目保证首次出现的数不会在中间再次出现,所以中间的数只有 3 种情况.

如果还是用猜首位的策略去猜中间的数的话可以在 $2n$ 次询问解决该问题,但是这并没有用到首字母不在中间出现这个性质.

考虑到每次允许猜测长度为 $0$ ~ $4n$,不妨从 $4n$ 上去考虑.

显然 4=3+1,那么我们发现每次可以对一个字母的所有后继都猜一遍.

比如 $ans+AB+ans+AX+ans+AA$.

除此之位我们还可以猜另外的一个字母 $y$.

于是,返回值就有 3 种可能:press=1:说明是 $y$,press=2,是出现 3 次的那个,press=0 是没有出现的.

这样,中间的字母就可以靠 1 次询问来确定了.

code:

#include <bits/stdc++.h>
#include "combo.h"
using namespace std;
string p,ans;
string guess_sequence(int N) {       int x,y,z,c,n=N;    c=press("AABB");              if(!c) {z=press("X");     if(z) ans+="X"; else ans+="Y"; }else {  z=press("A");     if(z) ans+="A"; else ans+="B"; }      if(N==1) return ans;    for(int i=2;i<n;++i) {                   if(ans[0]=='A') {   // no A   p=ans+"BX"+ans+"BY"+ans+"X"+ans+"BB";     z=press(p);    if(z==i-1) ans+="Y";   if(z==i) ans+="X"; if(z==i+1) ans+="B"; } if(ans[0]=='B') {p=ans+"AX"+ans+"AY"+ans+"X"+ans+"AA";z=press(p); if(z==i-1) ans+="Y"; if(z==i) ans+="X"; if(z==i+1) ans+="A";  } if(ans[0]=='X') {p=ans+"BB"+ans+"BY"+ans+"Y"+ans+"BA";   z=press(p); if(z==i-1) ans+="A";      if(z==i) ans+="Y"; if(z==i+1) ans+="B";  } if(ans[0]=='Y') {       p=ans+"BX"+ans+"BB"+ans+"X"+ans+"BA";z=press(p); if(z==i-1) ans+="A";  if(z==i) ans+="X";                                                       if(z==i+1) ans+="B";  }}string s; s.clear(); s+=ans[0];  c=press(ans+"A"+s+ans+"B");        if(c!=n) {z=press(ans+"X");       if(z==n) ans+="X"; else ans+="Y"; }       else {  z=press(ans+"A");     if(z==n) ans+="A"; else ans+="B"; }      return ans;
}

  

LOJ#2863. 「IOI2018」组合动作 交互相关推荐

  1. 「IOI2018」Highway 高速公路收费

    目录 「IOI2018」Highway 高速公路收费 题目描述: 实现细节: 输入格式: 输出格式: 样例: 数据范围与提示: 子任务: 题解: Code 「IOI2018」Highway 高速公路收 ...

  2. Loj #3089. 「BJOI2019」奥术神杖

    Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的 ...

  3. Loj #3111. 「SDOI2019」染色

    Loj #3111. 「SDOI2019」染色 题目描述 给定 \(2 \times n\) 的格点图.其中一些结点有着已知的颜色,其余的结点还没有被染色.一个合法的染色方案不允许相邻结点有相同的染色 ...

  4. Loj #3055. 「HNOI2019」JOJO

    Loj #3055. 「HNOI2019」JOJO JOJO 的奇幻冒险是一部非常火的漫画.漫画中的男主角经常喜欢连续喊很多的「欧拉」或者「木大」. 为了防止字太多挡住漫画内容,现在打算在新的漫画中用 ...

  5. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  6. loj#2143. 「SHOI2017」组合数问题

    loj#2143. 「SHOI2017」组合数问题 题目描述 Solution 考虑转化一下我们要求的东西. ∑i=0n(nkik+r)=∑i=0n(nki)[i≡r(modk)]\sum_{i=0} ...

  7. LOJ#2542. 「PKUWC2018」随机游走

    LOJ#2542. 「PKUWC2018」随机游走 题目描述 Solution 去过一个点集中所有节点的期望时间不好求,考虑min−maxmin-maxmin−max容斥,转化为求第一次到达某一个点集 ...

  8. LOJ#2145. 「SHOI2017」分手是祝愿

    LOJ#2145. 「SHOI2017」分手是祝愿 题目描述 Solution 首先有一个结论: 灯的状态序列a1,a2...ana_1,a_2...a_na1​,a2​...an​唯一对应了一个最优 ...

  9. Loj #2568. 「APIO2016」烟花表演

    Loj #2568. 「APIO2016」烟花表演 题目描述 烟花表演是最引人注目的节日活动之一.在表演中,所有的烟花必须同时爆炸.为了确保安全,烟花被安置在远离开关的位置上,通过一些导火索与开关相连 ...

  10. Loj #2585. 「APIO2018」新家

    Loj #2585. 「APIO2018」新家 题目描述 五福街是一条笔直的道路,这条道路可以看成一个数轴,街上每个建筑物的坐标都可以用一个整数来表示.小明是一位时光旅行者,他知道在这条街上,在过去现 ...

最新文章

  1. 双十一秒杀架构模型设计实践!
  2. 支持的网卡列表_Windows 10的5G网卡折腾笔记(含采购链接)
  3. Yarn 和 Npm 命令行切换 摘录
  4. 掌握大数据数据分析师吗?_要掌握您的数据吗? 这就是为什么您应该关心元数据的原因...
  5. 暑期英语学习(词组积累)【持续更新中】
  6. 操作系统原理与实践-2操作系统的引导
  7. 支付宝芝麻分多少算正常?分高有什么好处?
  8. win10自带虚拟机安装CentOS7系统(转)
  9. 微软公告:Visual Basic 6 完全兼容 Windows 8 的整个产品周期
  10. Android Studio使用jni、so库
  11. jQuery Howto: 如何快速创建一个AJAX的加载的图片效果
  12. 农业物联网卡存在哪些问题?
  13. java哪个软件编程好学吗_有什么好学的编程语言吗?
  14. 51nod 最长的循环节(对循环小数位的理解+快速幂+欧拉筛)
  15. 【1002】Eclipse安装(编程软件)、Eclipse创建第一Java项目、eclipse安装包
  16. 高手常用的15 种 SQL 优化
  17. 8个经典智能穿戴设备优选电路方案合辑
  18. 决策树和随机森林预测员工离职率学习代码
  19. win7桌面背景_解决WIN7桌面背景无法更改的问题
  20. vscode如何打开html

热门文章

  1. PyTorch 实战之水果分类器
  2. Window10 WSL2 Linux子系统文件目录路径
  3. 介绍一个免费的开源网站(BootCDN)
  4. react插槽Protal
  5. 知道ip获取计算机密码,知道iP地址怎么获取密码
  6. C++求球的面积与体积,公式一样输出结果不一样?
  7. 苹果电脑上不错的五款视频调色应用
  8. 哈罗选了个好时点上线顺风车业务,但很可能雷声大雨点小
  9. Java.day17
  10. 如何指定多边形区域下载地图