居然沒出原題聽奇怪。
好難啊。
t1計算幾何。
把x有交集的牆合併起來。
然後再每乙個牆的端點上加入每乙個\(x\)軸以上的點和這個端點的向量。
然後每個\(vector\)極角排序即可。
查詢的時候對每個端點算出和當前點的向量,然後在\(vector\)中查詢比這個點小的個數。
如果當前端點是左端點就+個數個,否則答案-個數個。
相當於一種差分,而會作出貢獻的自然是那些被牆擋住的部分。也就是大於和起點的向量小於和終點的向量。
t2線段樹掃瞄線。
首先將查詢的詢問分成\([1,l-1]->[l,r]\)和\([1,r]->[l,r]\)這兩個。
然後考慮如何維護這樣的字首資訊。
掃瞄線。
設當前掃瞄位置為\(l\),那麼掃瞄線上位置\(j\)記錄的資訊就是\([1,l]->j\)的所有資訊。
然後我們需要的掃瞄線是可以得到如下乙個函式:
\[ans_=\sum\limits_^f_(r)-\sum\limits_^f_(l-1)
\]這個有點麻煩了。
因為需要代入乙個\(x\)而算出眾多貢獻。
考慮如何做。
我們將\(f\)設為乙個如下的函式:
\[f(x)=ax+b
\]然後首先初始化這個函式。
先直接算出\(1->[1,n]\)的所有\(mex\),然後初始化\(a_i=mex[i],b_i=0\)。
這樣初始的答案就是對的了。
然後考慮修改。
維護如下乙個值\(mx[x]\)表示線段樹區間中\(mex[i]\)的最大值。
然後我們發現\(mex[x]\)是遞增的。
我們需要修改的是一段連續的區間。
設\(nxt[i]\)為\(a[i]\)在\(i\)之後下一次出現的位置。
也就是說當前位置從\(l\)移動到\(l+1\)的時候,對於所有的\(i\in [l+1,nxt[l]-1]\),以這些位置為終點的所有\(mex\)值均要和\(a[l]\)取\(min\)。
因為這些部分\(a[l]\)並沒有出現。
這樣我們改變\(mx[x]\)的值。
同時也要改變\(a,b\)的值。
怎麼做?
我們發現貢獻對於後面代入的某個值是這樣的。
如果某個位置將要被修改(\(mx[x]>a[l]\))
那麼對於這個位置來說,\([1,l]\)的所有起點對於當前這個右端點的貢獻全部都減去\(mx[x]-a[l]\),所以\(b_x-=l*(mx[x]-a[l])\)。
而同時,\([l+1,i]\)也就是需要查詢代入的值這一部分是不受影響的,所以\(a_x+=mx[x]-a[l]\),這樣直接用標記下傳即可。
然後修改掉\(mx[x]=d\)即可。
查詢的時候查詢區間的\(k\)和以及\(b\)和,讓他們一同做出貢獻。
仍然有乙個問題。
就是我們暴力的修改複雜度是無法保證的。
因此我們維護這樣乙個值\(s[x]=0/1\),表示當前區間的所有點是否是同乙個值,修改的時候如果是同乙個值直接修改,否則向下遞迴。
然後一種顏色加入和被覆蓋的複雜度都是\(logn\),那麼總的複雜度仍然是:\(o(nlogn)\)
t3字尾排序。
考慮一種等價於最小表示法的方式。
如果當前位置為\(i\),那麼\(a[i]\)出現的上個位置為\(j\),那麼\(j\)的貢獻即為\((i-j)*w^\),這樣會得到乙個\(hash\)值。
發現這種表示方法等價於最小表示法。
然後考慮字尾排序求出\(height\)陣列,然後求出本質不同字串個數。
可以直接對字尾排序,然後比較的時候用二分+\(hash\)求\(lcp\),如上給出了一種\(hash\)的求法
可以用主席樹進行維護。
主席樹每個位置代表以當前點為右端點,主席樹上的位置為左端點的字尾的字首的\(hash\)值。
然後根據上面我說的方式進行\(hash\)的更新。
可以發現相當於在給主席樹的一段字首區間加上乙個等比數列,這裡由於所有的等比數列公比相同,所以直接求首項和即可標記永久化來維護這一點。
然後可以求\(hash\)了,直接二分+\(hash\)求出\(lcp\),然後比較下乙個字元即可。
下乙個字元可以用每種顏色的\(vector\)+\(lower_bound\)來求出。
然後就可以比較了。
比較的次數為\(nlogn\)次,每次比較的複雜度是\(log^2n\),所以總的複雜度是\(o(nlog^3n)\)。
會被卡常,改成\(stable\_sort\),也就是歸併排序(%%%湘源大神告訴我的)就可以過了。
另外\(height\)可以直接利用\(lcp\)來求。
這樣就可以直接算出本質不同字串個數了。
省選模擬19
做兩遍 lis 分別從前後開始 看看 i 是否在 lis 上以及這個權值是否唯一 code include define int long long overflow memory limit define rint signed define lowbit x x x define inf 0x3...
考試 省選96
t1 這個題就是考慮去大力分類討論。首先可以知道 k 3 的情況答案肯定是0.那麼分類討論 3,2,1,0 的情況。首先是 k 3 的情況。這個情況很簡單。首先 m 必須為3。就是我們考慮一下用總的方案去掉鈍角三角形的方案。那麼答案就是 ans binom n sum limits 1 i 這很簡單...
考試 省選95
t1 大神說是打個表找規律啥的。我利用生成函式 吉夫特那個題的結論推出來類似的結論。就是說對於所有深度為 i 的點,其對答案有貢獻,當且僅當 t i 0 這樣的話就可以直接用乙個 orfwt 來做了。t2生成樹計數原題。比原題還簡單。可以把 a i 抽象成乙個點變成乙個含有 a i 個點的連通塊。然...