2018雅禮集訓1 18 日記 線段樹

2021-08-14 20:09:16 字數 2198 閱讀 5311

真tm線段樹神題。。。 設[

l,r]

複雜值為tl

,r首先對於詢問[l

,r] ,把問題轉化為:∑n

i=1∑

nj=i

ti,j

−∑l−

1i=1

∑l−1

j=it

i,j−

∑ni=

r+1∑

nj=i

ti,j

我們先考慮字首的,字尾的反過來再做一遍就是了。

我們設f

i 為∑i

j=1t

j,i ,那麼fi

的字首和就是所求。

從左到右掃,考慮用一棵權值線段樹維護每個權值的貢獻,掃到

i 時,把≥a

i的權值的貢獻全部乘上

k ,再加上ai

對fi 貢獻即可。 ai

對fi 貢獻如何計算呢?考慮預處理每個ai

對fi 的貢獻,也就是∑i

j=1k

numj

,i,num

j,i 表示[j

,i] 中比ai

小的數的個數。開一棵線段樹,按ai

從小到大插入,位置

x 表示上式中為j=

x的貢獻,每次插入就是把[1

,i] 乘上

k ,然後查詢ai

貢獻是在插入之前,就是[1

,i−1

] 的和,因為這個時候對於

i 位置的乘

k操作都是多餘的,所以記錄下多乘的

k ,最後乘上逆元即可。 然後f

i就求出來了,字首和一下,再反著做一遍,對於每個詢問就o(

1)了。

**:

#include

#include

#include

#include

#define ll long long

#define n 300010

#define mid (l+r>>1)

#define pii pair

#define fs first

#define sc second

using namespace std;

const int

mod=1000000007;

int n,m,k,a[n],z[n];

pii r[n];

ll mi[n],f[2][n],s[2][n],inv[n];

int read()

ll ksm(ll a,int b)return r;}

struct tree

void update()

void cal(int d)

void pushdown()

}void build(int l,int r,int f)

void add(int pl,ll d,int l,int r)

pushdown();

if(pl<=mid) ls->add(pl,d,l,mid);

else rs->add(pl,d,mid+1,r);

update();

}void mdf(int lx,int rx,int d,int l,int r)

pushdown();

if(rx<=mid) ls->mdf(lx,rx,d,l,mid);

else

if(lx>mid) rs->mdf(lx,rx,d,mid+1,r);

else ls->mdf(lx,mid,d,l,mid),rs->mdf(mid+1,rx,d,mid+1,r);

update();

}ll qry(int lx,int rx,int l,int r)

ll getinv(int pl,int l,int r)

}*xtr;

void work(int b)

xtr->build(1,n,0);

for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)

(f[b][i]+=f[b][i-1])%=mod;

if(b)

for(int i=1;i<=(n>>1);i++)

swap(f[b][i],f[b][n-i+1]);

}int main()

return

0;}

2018雅禮集訓1 12 小C飲水記

題面 考場上sb用set,式子還沒化成o t 的,總複雜度o ntlogn n t2 70分滾粗。首先對於一段長度為 k 區間,假設按w1 wk的順序來選,貢獻為 i 1kw i2i 所以顯然要按從大到小的順序來選,然後發現本題不要求取模,所以當 i 很大時,wi 的貢獻就可以忽略不計了。所以我們只...

雅禮集訓 小C飲水記

標籤 鍊錶,貪心 暴力做法 貪心,對於每個區間,從大到小排序,顯然,wi大的對答案貢獻越大 時間複雜度o n 3 log n 正解 因為題目輸出實數,所以當交換次數到一定時候,對答案的影響可以忽略不計 這個t大約是30次 對每個wi的貢獻單獨計算 每個wi只對相鄰的t個產生貢獻,所以取前後各t個 計...

雅禮集訓及WC2018划水記

noip考成250,沒得去thuwc和pkuwc,和czy等去參加本來只有samjia和棟棟的集訓隊模擬。抱著 的心態去比賽。第一天剛到比較困,比賽有點沒精神,看到t3的67暴力是計算幾何很高興,結果寫完卡常失敗只有20多。第一題貪心,第二題需要一些觀察。下午太睏,就腐過去了 第二天是陳通的題,信心...