标签:com set 就是 包含 code 取出 off 两种 想法
题目大意
这是一道交互题
有一个长度为\(n\)的未知序列\(a\)和一个大小为\(k\)的队列\(S\)。保证\(1\leqslant k\leqslant n\leqslant 1024\),且\(n,k\)都是\(2\)的次幂。
你可以进行以下两种操作:
? i
Y
,否则输出N
R
,交互程序会清空队列。保证\(\frac{3n^2}{2k}\leqslant 15000\)
你需要在不超过\(\frac{3n^2}{2k}\)次询问和不超过\(30000\)次重置之内得出序列\(a\)中不同数的数量\(d\),并输出! d
构造题嘛,那就是乱搞一通的事情做法不唯一。
先说一下具体的想法。
对于每个\(i\in[1,n]\),要确认\(a_i\)是否在前面出现过,最后前面没出现过的\(a_i\)的数量就是不同数的数量。
然后就可以开始构造了。
按块长\(s=\lceil\frac k2\rceil\)分块,每次取两块出来询问,然后重置。
然而这样的询问次数是\(\frac{n^2}s-n\)的,并不能通过此题。
ztc
的辣鸡构造:
每次取出第一块、中间的某一块、最后一块来询问,之后再取第一块和最后一块来询问,再删掉第一块和最后一块,递归处理,直至删完。
询问次数:设有\(a\)块时次数为\(F(a)\),则\(F(a)=3s(a-2)+2s+F(a-2)=\frac 34a^2s-\frac 12as\)
代入\(as=n\)得总次数\(\large \frac{3n^2}{4\lceil\frac k2\rceil}-\frac n2<\frac{3n^2}{2k}\)
注意特判\(n=1\)
【题解】 CF1290D Coffee Varieties (hard version)
标签:com set 就是 包含 code 取出 off 两种 想法
原文地址:https://www.cnblogs.com/ztc03/p/12364668.html