[loj2863] [ioi2018 d1t1] combo - 有趣的交互题

交互题(一) 普通交互题 UR #10 世界线 有一个长度为n的排列A,而你需要求出它 你可以进行两轮实验,每轮开始有一个2n个点的图,且有边,每轮实现分为两个部分,第一个部分你可以在的定点间连一些边,,第二个部分你可以询问的顶点间的联通关系。 加边和询问的数目都不得超过 每个联通块内的点都是不可区分的 试着采用连通块大小传递一些信息 如果在两轮种都给每一个分配不同的大小,就可以区分开来 第一... 阅读详情

传送门:https://loj.ac/problem/2863

斗胆来一发ioi题解。

今年的d1t1是一道交互题。喜欢出交互题是ioi的一大特色之一,而国内的正式比赛中还是很少见到交互题的身影的(印象中只有wc2016和wc2018有交互题)。

虽是ioi,但难度不算大的题还是会出现的,主要也是要考虑到世界各国选手的整体水平。本题算是今年6道题中最简单的一道,全场大约有一半的选手都成功ac。

题目大意:有一个字符串s,长度n<=2000,由4种字符“A”“B”“X”“Y”组成,保证第一个字符在后面不再出现。你可以向交互库询问一个自己指定的字符串p(p的长度不超过n*4且也是由上述4种字符组成),交互库会返回一个非负整数x,表示最长的、既是s的前缀、也是p的子串的串长。要求用不超过n+2次询问确定串s。

看到这个题,首先可以想到:这个奇怪的限制“保证第一个字符在后面不再出现”是干什么用的?容易想到我们可以用第一个字符作为“天然的分隔符”,在p串中一次性塞入若干可能的结果来进行猜测。

容易想到的一种解法是,如果已知长度为x的前缀(记做q),我们可以用2次操作,问出第x+1个字符:

首先令p=qAqB,如果询问结果=x+1,说明下一个字符是A或B,于是再询问p=qA,根据结果是x还是x+1就可以确定下一个字符;同样地,如果第一次询问得到x,说明下一个字符是X或Y,同样也可以再询问一次得到结果。

这样询问次数=2n,能不能更给力些?

要做到n+2次询问,说明我们要做到1次询问得到1位的结果,当然我们会发现问出第1位和最后一位的话两次询问是无法避免的。

首先,既然第一个字符不会重复出现,我们下面的询问就只是3选1,而不是4选1。下面不妨设首位是Y,后面的可选项是A,B,X吧。

然后,我们相当于每次要构造一个p,使得可能会有3种不同的回答,分别对应下一个字符的3种情况。

3种回答显然只能是x,x+1,x+2,因为x-1之类的回答没有任何意义。

我们可以让p中有一个qA,用x+1表示A,然后不加入形如qB的串,则x就是B,那x+2呢?

如果要让X时答案是x+2,就意味着必须在qX后面再匹配一位,而后一位我们不知道,咋办?

此时我们就要利用|p|<=4n的性质。直接枚举下一位!

也就是说,p=qAqBAqBBqBC,此时恰好满足我们的要求。

于是问题被完美解决了。干得漂亮!

//注:以下代码根据ioi提交格式编写

#include<bits/stdc++.h>
using namespace std;
#include"combo.h"
string as,p;
void wk(char a,char b,char c,int n){
	for(int i = 2;i < n;++i){
		p = as + a + as + b + a + as + b + b + as + b + c;
		int j = press(p);
		if(j == i - 1) as += c;
		else if(j == i) as += a;
		else as += b;
	}
	if(press(as + a) == n) as += a;
	else if(press(as + b) == n) as += b;
	else as += c;
}
string guess_sequence(int n){
	if(press("AB")){
		if(press("A")) as = "A";
		else as = "B";
	}
	else{
		if(press("X")) as = "X";
		else as = "Y";
	}
	if(n == 1) return as;
	if(as == "A") wk('B','X','Y',n);
	else if(as == "B") wk('A','X','Y',n);
	else if(as == "X") wk('A','B','Y',n);
	else wk('A','B','X',n);
	return as;
}

 

IOI2018所有题面 IOI2018的所有题目的中文题面 立即下载

相关推荐

ioi2018集训队作业1

希望喜欢算法的童鞋一起学习大佬们的思维。IOI是国际信息学奥林匹克竞赛,此文档是中国IOI2018集训队的作业题。

IOI2018退役记 + NOIP2018游记

图先鸽着。 Day1 在空中感受了一下日本的特别高的森林覆盖率。认识了向导,据说878787个国家至少有13\frac{1}{3}31​的向导是中国人(向导都是筑波大学的留学生),没有英文水平的选手甚至觉得中文比英文好用(捂脸)。 官方发了两件T恤,一件雨衣,一个made&amp;amp;amp;amp;amp;amp;amp;nbsp;in&amp;amp;amp;amp;amp;amp;amp;nbsp;China\texttt{made in China}made&amp

whzzt的博客 7877

IOI2018中国国家候选队论文集正式版

目录 浅谈生成函数在掷骰子问题上的应用 杨懋龙 1 《后缀树结点数》命题报告及一类区间问题的优化 陈江伦 11 浅谈保序回归问题 高睿泉 23 《Fim 4》命题报告 吴瑾昭 34 解决树上连通块问题的一些技巧和工具 任轩笛 45 《Jellyfish》命题报告及拓展探究 梁晏成 58 Leafy Tree 及其实现的加权平衡树 王思齐 75 《小H爱染色》命题报告 陈嘉乐 87

[ioi2018 d2t2] highway - 交互题 - 二分

题目大意:给定n个点m条边的无向简单连通图,图上有s,t两个点,你并不知道是哪两个,每条边的边权可以是a也可以是b(a&lt;b)。每次你可以指定每条边的边权到底是a还是b,交互库会返回此时s到t的最短路长度,要求用不超过50次询问求出s和t。n&lt;=90000,m&lt;=130000。 交互题历来是ioi的一大特色。今年的这道题给人的感觉跟去年的d1t1,d2t2两道交互的风格比较像,当...

liuzhangfeiabc的博客 680

IOI2018 中国国家候选队论文集.pdf

这个 IOI2018 中国国家候选队论文集.pdf 我是无福消受了,给大佬们看吧

【无线通信】射频杂散(RF Spurious Emissions)

射频杂散(RF Spurious Emissions)是指在无线通信系统中,除了在指定频率范围内的预期信号之外,任何不需要的或非预期的射频信号。这些杂散信号可能会干扰其他通信系统,降低系统性能,并违反无线电通信法规。射频杂散通常包括谐波、次谐波、互调产物和其他非线性失真所产生的信号。

qq_38801607的博客 5424

[loj3528] [IOI2021] 位移寄存器 - 交互(提答?) - 高精度 - 并行计算 - 排序算法

orz dls AK IOI2021 传送门:https://loj.ac/p/3528 Warning: 此题非常有(du)趣(liu) 题目大意:你有个长度为位的寄存器,一开始号寄存器里存了个位的数,你要通过寄存器的复制、赋值、按位与、按位或、按位异或、按位取非、左移、右移、加法操作实现对这些数进行求最小值或排序。 这是今年(2021年)IOI的d2t3,我甚至不知道该怎么把它分类……这显然是个非传统题,也许可以勉强算个交互,但是这一点也不“交互”好吧,因为你除了最开始的...

liuzhangfeiabc的博客 693

深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。按F12打开开发者工具,切换到Network(网络)面板。实际环境中,我们需要使用Python重现这一加密逻辑。查看请求响应,寻找包含评论数据的JSON接口。参数是大众点评的反爬机制核心,需要特别处理。:尊重网站的robots.txt文件规定。:仅将数据用于合法合规的研究和分析目的。:不侵犯大众点评的商业秘密和知识产权。打开大众点评网站,进入任意商户页面。:对采集到的用户信息进行脱敏处理。:避免对目标网站造成过大负担。

Z_suger7的博客 1583

[IOI2018]-day1 简要题解

【题目地址:T1-组合动作】 因为只有4种字母,且只能询问n+2n+2n+2次,那么我们需要平均一次就要确定一位。 而询问的串长,最长为4×n4\times n4×n,所以每次对于一个要确定的字母我们可以直接输出四种情况。但是这样需要2次确定一位,所以我们需要进一步优化。 首先,我们可以花两步确定第一位: 询问"AB",如果返回的值大于0,则就是"AB"中的一个,然后就输出一个"A",如果返回...

TimeTraveller-VictoryCzt 639

NVIDIA B300 vs B200:详细解析与性能对决

详细解析 NVIDIA B300 整机)的性能,并与前代的 B200 进行对比。它不仅在核心计算能力(FP8)上实现了飞跃,更重要的是通过革命性的第二代 Transformer Engine 和第五代 NVLink 技术,彻底重塑了大规模 AI 模型训练和推理的效率与规模上限。其显存容量和带宽的巨大提升也为处理超大型模型和数据提供了坚实基础。与 B200 相比,B300 是一次全面的、代际性的性能跃升,特别适合那些需要处理最前沿、最复杂 AI 和科学计算任务的用户和组织。

2401_89353317的博客 3042

CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04

在 ubuntu14 系统上面安装 CSI Tools,2020最新教程,亲测可用,只要保证和我做法一致绝对可以安装好。

WS的小屋 1万+

UOJ.26.[IOI2014]Game(交互 思路)

题目链接 \(Description\)   有一张\(n\)个点的图。M每次询问\((u,v)\),你需要回答图中\((u,v)\)间是否有边。如果M可以用\(<n(n-1)/2\)次询问确定图中所有点是否连通,M赢;否则你赢。你可以根据M之前的询问任意改变图的连边情况。实现函数\(hasEdge(u,v)\)回答每次询问,使得你赢。   \(n\leq 1500\)。 \(Solutio...

weixin_30357231的博客 124

基于SHIS凝视型短波红外高光谱相机(900-1700nm)区分不同宝石的差异性和可分性(宝石分选)

SHIS系列凝视型高光谱相机基于液晶可调谐滤波器(LCTF),通过电控LCTF进行连续细分窄波段分光,对每个波段进行高分辨率的二维面阵成像,进行图像处理后,获得完整的高光谱高清图像序列。具有低功耗、小型化、使用方便和易于扩展的优势。其工作波段覆盖400nm至1000nm,能够捕捉宝石在不同波长下的光谱特征,为宝石鉴定提供了新的工具。

wayho的博客 707

[IOI2018]组合动作——构造

题目连接: [IOI2018]combo 题目大意:有一个未知的长度为n的字符串$T$,只包含$A,B,X,Y$四个字符且首字母只出现一次,每一次你可以询问一个长度不超过$4n$的字符串$S$,交互库会返回$S$的子串与$T$的前缀的最大公共长度,要求在不超过$n+2$次询问后获得$T$串。 首先首字母只出现一次,我们可以先搞清首字母是什么。 如果一个一个试需要三次,但如果我们二分询问就只...

weixin_33743248的博客 176

Unity 如何使用命令模式

命令模式 游戏中,当你想通过一种通用的方式来存储命令并能够撤消命令时,那么命令模式最有用。 在“示例”中,你将看到一个可以通过GUI按钮移动的简单点。 采取行动后,您可以撤消并重做。我在屏幕上添加了一个简单的OnGUI标签输出,因此您可以看到命令列表,并指出哪个是当前命令。 在此示例中使用了4个类: Command-这是任何命令模式都可以继承的基本结构(抽象类)。您可以在任何项目中使用此类。 MoveCommand-这是从Command类继承的结构,将使用Execute和UnExecute(撤消)。每个移

TxNet 1555

在Keil uv5里面添加STC元器件库,不影响其他元件

先到网上下载stc.CBD(宏晶网站的地址实效了)还有STC新系列单片机的头文件,宏晶的网站就有1、在Keil/C51/INC下新建目录"STC"文件夹, 把所有STC新系列单片机的头文件拷贝到"STC"目录下。2、下载的用于keil下的STC器件数据库更名为STC.CDB并拷贝到Keil/UV4目录下。3、打开Keil文件夹下的TOOLS.ini文件。4、在[UV2]下键入CDB0="UV2\S

技术联盟 1万+

【C++】STDIO交互题

交互题这类型不同于普通的题。 可以理解为有个问题需要你解决,你通过输入某些东西。 表示你要问系统的问题,这时系统会回答你的问题。 在代码中的回答方式就是会输入某个东西就是系统给你的答案,通过这些信息你可以得到问题的解。 你是不可以自己测试的,只能提交给系统测试。 有个东西需要用到C++中的 fflush(stdout); ,这个东西是用来清空输出缓存区的 因为你一直提问,一直输出,就需要清...

Ljnoit 4604

BAQ压缩原理

BAQ——Block Adaptive Quantization,块自适应量化,一种数据压缩算法。

2871

[ioi2018 d2t1] doll - 有趣的构造题

花了4个小时终于搞懂了这题……膜拜现场各种1h以内a掉的julao。 这道题全场大概30几人ac,难度不算太高也不算太低,算是d2最简单,全场第二简单的题。 你要构造一张图,其中起点编号为0,有m个给定的普通点,编号为1~m,你还可以添加若干个特殊点(数量自己决定,这里设为s个),编号-1~-s。所有点可以有任意多条入边,但起点普通点只能有1条出边,特殊点只能有2条出边。 每个特殊点满足:当...

liuzhangfeiabc的博客 959

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[IOI2018] seats 排座位

[IOI2018] seats 排座位 IOI2018题解 压缩状态思想很不错的 每次把原来的贡献减掉,新来的再加上 最多涉及10个点 注意: 1.去重 2.下标从0开始 3.线段树初始的最小值个数都是r-l+1 代码: #include<bits/stdc++.h> #define reg register int #define il inlin...

weixin_34162629的博客 284

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【UOJ#26.】【IOI2014】Game 交互题,构造

先给UOJ打个广告。Orz Vfeaking~~~ #include int main() { puts("UOJ网址:UOJ.ac"); puts("本题地址:uoj.ac/problem/26"); } 题解: 两种,都是建立在一个前提下的, 就是一个点(或者点集),如果它的出边都问完了之前就可以知道它是否连通了 那么显然剩下的出边就没有必要问了。 然后这样这些边

辗转山河弋流歌 2030

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IOI2018题解

只有部分题解 练习赛 T2 自然还是要简单考虑了 0~n-1的排列,考虑相对的大小 我们先考虑对于前三个:a,b,c 询问a,b,询问b,c,再询问a,b,c 发现,如果三个知道两个,那么第三个可以唯一确定 所以分情况讨论一下: 1.a>b,不妨钦定a=n-1,然后得到a,b,c的值,再询问(c,d),(b,c,d)。。。就可以得到所有的值 2.a<b,不...

weixin_34323858的博客 655

【LOJ2864】「IOI2018」排座位

【题目链接】 点击打开链接 【思路要点】 对于一个 ttt ,将 1,2,3,...,t1,2,3,...,t1,2,3,...,t 所在方格染黑,剩余方格染白,考虑网格图中所有的 2∗22*22∗2 的正方形,那么 1,2,3,...,t1,2,3,...,t1,2,3,...,t 形成一个矩形的充要条件为: 111 、包含 111 个黑色方格 2∗22*22∗2 的正方形恰好有 4...

cz_xuyixuan的博客 1094

两道交互题

http://codeforces.com/contest/810/problem/D一直感觉交互题很有意思呀;在 1…..n 中选了k个数字我们猜 x y 机器选择最接近x的数a 和最接近y的数 b 如果 |x-a| <= |y-b| 机器输出 TAK 否则NIE 只需要猜出两个数字 即可 最多问60次一直没想到怎么二分,看到了一个正确性很高的二分。。。 那么我们 将 1-

qq_24664053的博客 1344

[loj2864] [ioi2018 d1t2] seats - 线段树

传送门:https://loj.ac/problem/2864 作死尝试这道全世界只有1人ac的神题。 先%一波dsgsjk,这位吊打全世界的julao可能是全世界第二个做出这题的现役oi选手。 题目大意:给定一个n*m的矩阵,矩阵中不重不漏地分布着0~n*m-1的元素。称一个大小为s的连续子矩阵是好的当且仅当其中不重不漏地出现了0~s-1的元素。每次交换矩阵中的两个元素,查询当前有多少个好...

liuzhangfeiabc的博客 948

【LOJ2863】「IOI2018」组合动作

【题目链接】 点击打开链接 【思路要点】 首先,我们可以通过 222 次操作确定第一个字符,不妨令其为 AAA 。 接下来,对于 2≤i≤N−12≤i≤N−12≤i≤N-1 若我们已经确定了前 i−1i−1i-1 个字符为 SSS ,我们询问 SBSXBSXXSXYSBSXBSXXSXYSBSXBSXXSXY ,若得到的结果为 i−1i−1i-1 ,则说明...

cz_xuyixuan的博客 821
上一篇: luogu P4774 [NOI2018] 屠龙勇士 - 数论 - exgcd - 扩展crt
下一篇: [ioi2018 d1t3] werewolf - kruskal重构树 - 二维数点 - 主席树
liuzhangfeiabc
博客等级 码龄8年 76粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值