明白之後 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個建築,從最右邊 所有建築都在左邊 看能看...