标签:成功 复制 匹配 bfs info 序列 树套树 答案 idt
只有部分题解
自然还是要简单考虑了
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,不妨钦定a=0,然后得到a,b,c的值,再询问(c,d),(b,c,d)。。。就可以得到所有的值
这里,由于a的值是钦定的,可能得到某个值是负数或者是大于n-1的,那么可以整体上下平移,得到最后的序列
最后的序列中,只要满足0在n-1左边,并且是一个0~n-1的排列,那么就是答案(显然只有一个)
可以说是经典的冒泡排序问题!
自然要抓住本质
我们考虑对于一个ai,它归位的次数就是它前面比它大的数的个数f[i]
证明:前面比它大的数,一次最多沉底一个,然而对于自己往后沉,在后面的bi前比bi小的数那里会考虑到的
所以就是max(f[i])
修改怎么办?
树套树!
两个logn成功T飞
发现,如果i<j并且ai>aj,那么f[i]一定小于f[j],这样的i是没有用的
把刚才的定义变一下:
然后动态开点权值线段树维护即可(离线离散化也可以不动态开点)
更优用bfs O(n^2)判断(反正提交答案)
首先,首字母只有一次
询问AB,如果长度>=1,就是A或者B,再问一次。否则是X或者Y,再问一次。——2次
后面怎么办?
这个长度不超过4n有点意思
首先一定要满足前缀是S,所以确定的前i-1位必须都有
看来要复制4份,不妨首字母是A
暴力枚举下一个:[A....BX][A....BY][A.....BB][A....X]
由于首字母只有一次,得到的一定是四个子串的最大匹配长度
如果多了2,就是B;多了1,就是X;不变,就是Y
1次确定一位。
最后一个,需要2次确定,尝试X,再尝试Y。
总共:2+(n-2)+2=n+2次
标签:成功 复制 匹配 bfs info 序列 树套树 答案 idt
原文地址:https://www.cnblogs.com/Miracevin/p/10351640.html