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\)个元素构成的集合,要 ...
随机推荐
- JavaScript实现ajax发送表单数据
知识点: 1.重置表单数据 2.获取表单数据(纯JavaScript) 3.设置表单数据(纯JavaScript) 4.ajax发送数据到客户端 (1)设置请求头,自己组合数据 (2)实例化表单对象, ...
- list里面放的实体对象,页面用c:foreach应该怎么取?
关于网友提出的" list里面放的实体对象,页面用c:foreach应该怎么取?"问题疑问,本网通过在网上对" list里面放的实体对象,页面用c:foreach应该怎么 ...
- Stochastic Optimization Techniques
Stochastic Optimization Techniques Neural networks are often trained stochastically, i.e. using a me ...
- 最好用的xshell替代软件----FinalShell工具
2017年8月份NetSarang公司旗下软件家族的官方版本被爆被植入后门着实让我们常用的Xshell,Xftp等工具火了一把,很长时间都是在用Xshell,不过最近发现了一款同类产品FinalShe ...
- 【原创】backbone1.1.0源码解析之Events
最近在看些node的源代码,发现backbone的应用还是挺广泛的,但是之前的学习忘得一干二净了,后悔当时没做笔记啊. 所以,无奈想用的更好,就是得把源代码看楚,所以还是把源代码的注释笔记留下来,供自 ...
- html5 canvas(基本矩形)
先从简单的开始 fillRect(x,y,width,height) 在坐标x,y的位置加上一个宽,高 如: fillRect(0,0,500,500)//在坐标0,0处加上一个宽高500的填充矩 ...
- 各浏览器 position: fixed 造成的bug 通用解决办法,Safari, iOS
将原来使用 position: fixed 的元素外层包裹一个 div.fixedWrapper .fixedWrapper { width: 100%; overflow: hidden; pos ...
- plsql 用法和技巧
1.导入csv文件 2.保存登录的密码
- 【Python】Flask系列-数据库笔记
MySQL-python中间件的介绍与安装: 1.如果是在类unix系统上,直接进入虚拟环境,输入sudo pip install mysql-python. 2.如果是在windows系统上,那么在 ...
- js自定制周期函数
function mySetInterval(fn, milliSec,count){ function interval(){ if(typeof count==='undefined'||coun ...