LOJ.2863.[IOI2018]组合动作(交互)
通过两次可以先确定首字母。然后还剩下\(n-1\)位,之后每一位只有三种可能。
最简单的方法是每次确定一位,通过两次询问显然可以确定。但是只能一次询问。
首字母只会出现一次,即我们可以将串分割成\(4\)个进行一次询问。我们是可以一次询问确定一位的。
比如:首字母为\(a\),其它字母为\(bcd\),\(ans\)为已确定的前\(i-1\)位,则询问\(ans+bb+ans+bc+ans+bd+ans+c\),就能确定\(i\)了。
这样第\(n\)位需要能单独判断,可以直接用两次。
那么总询问次数为:\(2+n-2+2=n+2\)。
#include <string>
#include <algorithm>
#include "combo.h"
std::string guess_sequence(int n)
{
char a,b,c,d;
std::string ans="";
if(press("AB")) c='X', d='Y', press("A")?(b='B',a='A'):(b='A',a='B');
else c='A', d='B', press("X")?(b='Y',a='X'):(b='X',a='Y');
ans=a;
if(n==1) return ans;//!
for(int i=1,t; i<n-1; ++i)
{
if((t=press(ans+b+b+ans+b+c+ans+b+d+ans+c))==i) ans+=d;
else if(t==i+1) ans+=c;
else ans+=b;
}
if(press(ans+b)==n) ans+=b;
else if(press(ans+c)==n) ans+=c;
else ans+=d;
return ans;
}
LOJ.2863.[IOI2018]组合动作(交互)的更多相关文章
- [IOI2018]组合动作
IOI2018 组合动作 UOJ 首先显然可以两次试出首字母 考虑增量构造 假设首字母为A,且已经试出前i个字母得到的串s 我们考虑press这样一个串s+BB+s+BX+s+BY+s+XA 首先这个 ...
- [IOI2018]组合动作——构造
题目连接: [IOI2018]combo 题目大意:有一个未知的长度为n的字符串$T$,只包含$A,B,X,Y$四个字符且首字母只出现一次,每一次你可以询问一个长度不超过$4n$的字符串$S$,交互库 ...
- 【刷题】LOJ 2863 「IOI2018」组合动作
题目描述 你在玩一个动作游戏.游戏控制器有 \(4\) 个按键,A.B.X 和 Y.在游戏中,你用组合动作来赚金币.你可以依次按这些按键来完成一个组合动作. 这个游戏有一个隐藏的按键序列,可以表示为由 ...
- Cocos2d-x手机游戏开发中-组合动作
动作往往不是单一,而是复杂的组合.我们可以按照一定的次序将上述基本动作组合起来,形成连贯的一套组合动作.组合动作包括以下几类:顺序.并列.有限次数重复.无限次数重复.反动作和动画.动画我们会在下一节介 ...
- UOJ#405. 【IOI2018】组合动作
原文链接https://www.cnblogs.com/zhouzhendong/p/IOI2018Day1T1.html 题解 首先二分一下,花费2次操作求出第一位的字符. 假设第一个字符是 Y,答 ...
- 【IOI2018】组合动作
还是自己水平不够,想了两天没想出来--(然后我就被其他人吊打了) 这种题目看了题解就秒会,自己想就想不出来-- 下面是我的心路历程(我就在想出来又叉掉的不断循环中度过--) 开始把题目看成了查询限制 ...
- LOJ.2865.[IOI2018]狼人(Kruskal重构树 主席树)
LOJ 洛谷 这题不就是Peaks(加强版)或者归程么..这算是\(IOI2018\)撞上\(NOI2018\)的题了? \(Kruskal\)重构树(具体是所有点按从小到大/从大到小的顺序,依次加入 ...
- LOJ.2864.[IOI2018]排座位(线段树)
LOJ 洛谷 先令编号从\(1\)开始.我们要求\([1,i]\)这些数字能否构成一个矩形. 考虑能否用线段树维护,让每个叶子节点\(i\)表示前\(i\)个数能否构成矩形. 一种方法是维护前\(i\ ...
- LOJ #6358 前夕 (组合计数、容斥原理)
题目链接 https://loj.ac/problem/6358 (另外一道\(4\)的倍数题左转loj #6356) 题意 题面写得就像一坨X一样,我来复述一下吧. 有\(N\)个元素构成的集合,要 ...
随机推荐
- oracle之回滚数据表 笔记
alter table [tableName] enable row movement;flashback table [tableName] to timestamp to_timestamp('2 ...
- cmd 概览---- 转
打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令 注:/c表示执行完命令后关闭cmd ...
- Kafka 温故(一):Kafka背景及架构介绍
一.Kafka简介 Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,使用Scala语言编写,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,多订阅者,冗余 ...
- linq.js - LINQ for JavaScript
var jsonArray = [ { "user": { "id": 100, "screen_name": "d_linq&q ...
- 各种奇妙的hack
Android Selector Hacks WebKit .selector:not(*:root) {} Chrome * Safari * Opera ≥ 14 Android * # Java ...
- iOS8 自定义navigationItem.titleView
navigationBar其实有三个子视图,leftBarButtonItem,rightBarButtonItem,以及titleView.前两种的自定义请参考http://www.cnblogs. ...
- 第12月第29天 cocos quick manual
1. Example: $ cd cocos2d-x $ ./setup.py $ source FILE_TO_SAVE_SYSTEM_VARIABLE $ cocos new MyGame -p ...
- py-faster-rcnn代码阅读2-config.py
简介 该文件指定了用于fast rcnn训练的默认config选项,不能随意更改,如需更改,应当用yaml再写一个config_file,然后使用cfg_from_file(filename)导入以 ...
- hibernate的一对多和多对一关联
一对一的关联就不写了,一般项目也用不到,如果可以一对一就直接合成一个表了,也不会出现一对一的关系. 本文主要研究一对多的关系. 1.一对多的关系研究: (1)RDB中关系表达: 多的一方创建外键指向 ...
- CodeForces Contest #1114: Round #538 (Div. 2)
比赛传送门:CF #1114. 比赛记录:点我. 又 FST 了. [A]Got Any Grapes? 题意简述: 有三个人,第一个人需要吃绿色葡萄至少 \(a\) 个,第二个人需要吃绿色和紫色葡萄 ...