传送门:bzoj4408
题解
将集合内数按升序排序逐个加入,设当前 [ 1 , n ] [1,n] [1,n]能用 S S S集合中的数表示。加入一个数字 a a a:若 a ≤ n + 1 a\leq n+1 a≤n+1则当前可以将区间变长为: [ 1 , n + a − 1 ] [1,n+a-1] [1,n+a−1],否则神秘数为 n n n。
主席树以离散化后权值为下标,查询二分下去找到最小的一个大于前缀和+1的权值。
传送门:bzoj4408
将集合内数按升序排序逐个加入,设当前 [ 1 , n ] [1,n] [1,n]能用 S S S集合中的数表示。加入一个数字 a a a:若 a ≤ n + 1 a\leq n+1 a≤n+1则当前可以将区间变长为: [ 1 , n + a − 1 ] [1,n+a-1] [1,n+a−1],否则神秘数为 n n n。
主席树以离散化后权值为下标,查询二分下去找到最小的一个大于前缀和+1的权值。