摘要: 给定一个打乱的等差数列,每次两种操作。 1.查询一个位置。 2.查询是否有比x大的数字。 一共60次操作。 sol: 30次操作即可二分出首项。 剩下30次操作查询出30个位置然后两两做差取gcd即可得到公差 阅读全文
posted @ 2019-02-23 15:53 Creed-qwq 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 考虑维护出每一个点左边第一个比它大的位置,右边同理,这样有一个合法区间。 然后对询问离线,由于要求只包含区间内的贡献,扫描线+线段树解决。 T1 http://codeforces.com/problemset/problem/1117/G 考虑一下笛卡尔树,然后分析出答案等于这个区间形成的笛卡尔树 阅读全文
posted @ 2019-02-23 15:48 Creed-qwq 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 如果我们能询问一个排列的话,我们就可以得到这个置换,然后反向求解。 但现在字符集只有26。 考虑26^3 1e5。 用一个三维坐标去映射到一个一维整数,然后就可以构造排列了。 cpp include define N 1100000 define eps 1e 7 define inf 1e9+7 阅读全文
posted @ 2019-02-23 09:53 Creed-qwq 阅读(170) 评论(0) 推荐(0) 编辑