FJOI2016 神秘數 主席樹

2022-05-05 11:54:09 字數 1004 閱讀 4963

明白之後 5min 就寫好了…自閉…

這題的題意是問你 \([l,r]\) 區間的數字不能構成的數字的最小值…

首先考慮 如果 \([1,x]\) 可以被表示

那麼加入乙個 \(a_i\) 顯然 \([1,x+a_i]\) 都可以被表示

有什麼好辦法呢

當然有\(o(q * \sum_*[r-l+1])\)

(霧)區間求和問題啥的考慮主席樹,首先我不會證明複雜度,是因為我菜/kk

還是一樣的套路 討論 \([1,x]\)

對於區間求 \(\sum_[a_i<=ans]\)

\([ans\)初值是1\(]\)

顯然此時 \([1,ans-1]\) 都可以表示出來 所以考慮擴大區間使得這個\(res = \sum_[a_i<=ans]\)

如果值比 \(ans\) 小肯定是不可以構成 \(ans+1\) 的 所以無需擴充套件…

#includeusing ll = long long ;

using namespace std ;

int read()

while(c >= '0' && c <= '9')

return x * f ;

}const int n = 1e5 + 10 ;

const int maxn = n << 5 ;

const int inf = 1e9 ;

int n , a[n] , rt[n] , ls[maxn] , rs[maxn] , sum[maxn] , cnt = 0 ;

void upd(int pre , int & o , int l , int r , int pos , int val)

int query(int a , int b , int l , int r , int l , int r)

signed main()

printf("%d\n" , ans) ;

} return 0 ;

}

主席樹 FJOI2016 神秘數

展開 題目描述 乙個可重複數字集合s的神秘數定義為最小的不能被s的子集的和表示的正整數。例如s 1 1 2 1 1 3 1 1 1 4 4 5 4 1 6 4 1 1 7 4 1 1 1 8無法表示為集合s的子集的和,故集合s的神秘數為8。現給定n個正整數a 1 a n m個詢問,每次詢問給定乙個區...

P4587 FJOI2016 神秘數 主席樹

題意 給出1e5個數 查詢l,r區間內第乙個不能被表示的數 比如1,2,4可以用子集的和表示出 1,7 所以第乙個不能被表示的是8 題解 先考慮暴力的做法 把這個區間內的數字按從小到大排序後 從前往後掃 當前能表示出 1,x 假設第i個數字y 1 x 那麼就可以表示 1,x y 如果y x 1那麼第...

FJOI2016 建築師 斯特林數

問題描述 小 z 是乙個很有名的建築師,有一天他接到了乙個很奇怪的任務 在數軸上建 n 個建築,每個建築的高度是 1 到 n 之間的乙個整數。小 z 有很嚴重的強迫症,他不喜歡有兩個建築的高度相同。另外小 z 覺得如果從最左邊 所有建築都在右邊 看能看到 a個建築,從最右邊 所有建築都在左邊 看能看...