交互题

有一个长为$N$的由$A,B,X,Y$组成的字符串$S$,其中首字母不会重复出现。给定$N$,求$S$,可以询问一个字符串的最长的为$S$前缀的子串长度,询问次数不超过$N+2$即为满分,询问串长度不超过$4N$。

$$1\le N\le2000$$

考虑先$2$次问出首字母,则之后可以用首字母作“分隔符”,然后考虑每个字符依次询问。

对于第$2$到第$N-1$个字符,设当前答案串为$T$,三个不是首字母的字符分别为$p,q,r$,则如果询问$TpTqpTqqTqr$,则可以根据返回值的不同确定当前字符,最后用$2$次询问问出第$N$个字符即可。

 1 const std::string C[4] = {"A", "B", "X", "Y"};
 2
 3 std::string guess_sequence(int N) {
 4   int first = press("AB") ? press("B") : press("Y") + 2;
 5   std::string answer = C[first];
 6   int x, y, z, cur = 0;
 7   FOR(j, 0, 4) {
 8     if (j == first) {
 9       continue;
10     }
11     ++ cur;
12     switch (cur) {
13       case 1:
14         x = j;
15         break;
16       case 2:
17         y = j;
18         break;
19       case 3:
20         z = j;
21         break;
22     }
23   }
24   FOR(i, 2, N) {
25     int result = press(answer + C[x] + answer + C[y] + C[x] + answer + C[y] + C[y] + answer + C[y] + C[z]);
26     if (result == i - 1) {
27       answer += C[z];
28     } else if (result == i) {
29       answer += C[x];
30     } else {
31       answer += C[y];
32     }
33   }
34   if (N != 1) {
35     if (press(answer + C[x]) == N) {
36       answer += C[x];
37     } else if (press(answer + C[y]) == N) {
38       answer += C[y];
39     } else {
40       answer += C[z];
41     }
42   }
43   return answer;
44 }

转载于:https://www.cnblogs.com/sjkmost/p/10357739.html

UOJ 405(IOI2018 D1T1)相关推荐

  1. 神奇的幻方2015提高组d1t1

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  2. UOJ #311「UNR #2」积劳成疾

    需要锻炼$ DP$能力 UOJ #311 题意 等概率产生一个长度为$ n$且每个数在[1,n]间随机的数列 定义其价值为所有长度为$ k$的连续子数列的最大值的乘积 给定$ n,k$求所有合法数列的 ...

  3. 洛谷 P2615 [NOIP2015 D1T1] 神奇的幻方

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  4. 使用第三方SDK(如微信、qq、快看、头条等),调用接口405 Method Not Allowed

    使用第三方SDK(如微信.qq.快看.头条等),调用接口405 Method Not Allowed 错误描述:postman请求正常,但客户端调用后接口没有反应,但返回了405错误. 解决方法:第三 ...

  5. uoj 117 欧拉回路

    1.判断是否为欧拉存在欧拉回路---裸的判断 欧拉回路就是看一笔能不能把途中所有的边跑完没得重复 对于无向边----建立双向边判断每个点的入度是否为2的倍数   1.1 对于有向边---建立单向边判断 ...

  6. UOJ#7. 【NOI2014】购票 | 线段树 凸包优化DP

    题目链接 UOJ #7 题解 首先这一定是DP!可以写出: \[f[i] = \min_{ancestor\ j} \{f[j] + (d[j] - d[i]) * p[i] + q[i]\}\] 其 ...

  7. 405 not allowed_无偿献血走进山东科技大学 405名爱心师生献血14万毫升

    半岛网11月4日讯清晨冷冽的秋风挡不住莘莘学子们奉献热血的真情!为保障近期岛城临床紧急用血需求,山东科技大学的师生们响应号召,组织了主题为"捐献青春热血,共筑温情山科"的活动,在这 ...

  8. 洛谷P3688/uoj#291. [ZJOI2017]树状数组

    传送门(uoj) 传送门(洛谷) 这里是题解以及我的卡常数历程 话说后面那几组数据莫不是lxl出的这么毒 首先不难发现这个东西把查询前缀和变成了查询后缀和,结果就是查了\([l-1,r-1]\)的区间 ...

  9. httpposterror_http请求405错误方法不被允许的解决 (Method not allowed)

    由于自己疏忽,导致请求错误405,然后前端数据传输没错,百度大都说跟post提交方式有关,改成get还是报错,检查才知道,controller中忘记写@requestMapping("/XX ...

最新文章

  1. java ognl表达式_java -------ognl表达式入门
  2. Java 遍历HashTable
  3. 机器学习深度学习研究者最重要的11张速查表
  4. 拥抱开放,Serverless 时代的下一征程
  5. 马尔可夫随机场数学原理理解
  6. 【图论】Kruskal算法求最小生成树详解
  7. python配置文件读取环境变量_转载:Python项目读取配置的几种方式
  8. mc用什么版本的java_我的世界网易 Java 版哪个版本比较好?
  9. KindEditor上传图片和修改图片
  10. 校长办公室管理系统c语言,【锦城故事】学软硬结合理论做智慧超群系统是锦城电子的必经之路...
  11. 2022年3月17日YYC松鼠短视频v4.2.6更新-增加详细的站点信息统计图表
  12. 【R_绘图】绘图字体设为Times New Roman
  13. Hibernate框架基础——cascade属性
  14. SCU - 4572 醉后不知天在水,满船清梦压星河【思维】
  15. SpringBoot库存管理系统,拿来学习太香了(附源码)
  16. Niushop 商品海报
  17. “入坑”自媒体写作,我有干货与你分享
  18. SoundPool类简介与适用场合
  19. 三菱M80系统服务器,三菱M80系统故障维修实例分享
  20. 仙剑五手游服务器维护,仙剑奇侠传五手游进不去怎么办 仙剑奇侠传五黑屏闪退解决方法...

热门文章

  1. SAP gateway 后台系统的 OData service 服务探测机制实现原理
  2. SAP CRM Fiori participant的图片显示调试全过程
  3. Jerry Wang诚邀广大SAP同仁免费加入我的知识星球,共同探讨SAP技术问题
  4. always on sql 收缩日志_使用alwayson后如何收缩数据库日志的方法详解
  5. 单片机c语言必背代码_【典藏】深度剖析单片机程序的运行(C程序版)
  6. 电脑怎么python转行_零基础转行DA系列|一周Python for Data Science入门
  7. 学python还是java贴吧_是学python还是java?一张图告诉你!
  8. visual studio 2019 HTML怎么自动生成代码_敲代码和编程适合什么样的笔记本?深度推荐...
  9. python模拟太阳系_用 Python 动态模拟太阳系运转
  10. linux var目录满了,Linux入门教程:/var/spool/clientmqueue 占满根目录