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,不妨钦定a=0,然后得到a,b,c的值,再询问(c,d),(b,c,d)。。。就可以得到所有的值

这里,由于a的值是钦定的,可能得到某个值是负数或者是大于n-1的,那么可以整体上下平移,得到最后的序列

最后的序列中,只要满足0在n-1左边,并且是一个0~n-1的排列,那么就是答案(显然只有一个)

T3

可以说是经典的冒泡排序问题!

自然要抓住本质

我们考虑对于一个ai,它归位的次数就是它前面比它大的数的个数f[i]

证明:前面比它大的数,一次最多沉底一个,然而对于自己往后沉,在后面的bi前比bi小的数那里会考虑到的

所以就是max(f[i])

修改怎么办?

树套树!

两个logn成功T飞

发现,如果i<j并且ai>aj,那么f[i]一定小于f[j],这样的i是没有用的

把刚才的定义变一下:

然后动态开点权值线段树维护即可(离线离散化也可以不动态开点)

T4

更优用bfs O(n^2)判断(反正提交答案)

Day1

T1

首先,首字母只有一次

询问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次

T2

猜你喜欢

转载自www.cnblogs.com/Miracevin/p/10351640.html