線段樹(種樹)

2022-05-09 08:36:14 字數 2104 閱讀 8317

2017種樹

題目描述

2017共有n棵樹從0到n-1標號。現要把這些樹種在一條直線上,第i棵樹的種植位置x[i]如下確定:

x[0] = x[0] mod l;

x[i] = (x[i-1]*a+b) mod l。

每棵樹種植的費用,是所有標號比它小的樹與它的距離之和。2017請你計算各棵樹的費用之積,最後對1000000007取餘。

輸入格式

共五行:

第一行為n

第二行為l

第三行為x[0]

第四行為a

第五行為b

輸出格式

總費用樣例

樣例輸入

5103

11

樣例輸出

180
樣例解釋:

5棵樹的位置分別為: 3, 4, 5, 6, 7.

費用分別為: 1, 3, 6, 10. (從第一棵樹開始)

總費用為: 1 × 3 × 6 × 10 = 180.

資料範圍與提示

10%的資料:n<=10;

60%的資料:n<=2×10^5;

100%的資料:n,l<=200000; x[0] ,a, b<=10^9.∑(

xi−x

k)|x

i>=xk

,1≤k

≤i−1

'>思路:

思路:用線段樹維護的數

比x小的個數以及比x(第i個數的位置)小的數的和,比x大的樹的個數以及比x大的數的和,x的費用==(x×比x小的數的個數-比x小的數的和)+(比x大的數的和-x×比x大的數的個數)。

1 #include2

const

int maxn=200000+10,mod=1000000007;3

int tree[maxn<<2],cnt[maxn<<2];4

intn,l,xx,a,b;

5int ans=1;6

void build(int rt,int l,int

r)12

int mid=(l+r)>>1;13

if(xx<=mid) build(rt<<1

,l,mid);

14else build(rt<<1|1,mid+1

,r);

15 tree[rt]=(tree[rt<<1]+tree[rt<<1|1])%mod;

16 cnt[rt]=cnt[rt<<1]+cnt[rt<<1|1

];17}18

int query(int rt,int l,int r,int s,int

t)24

int mid=(l+r)>>1;25

if(t<=mid) return query(rt<<1,l,mid,s,t)%mod;

26else

if(s>mid) return query(rt<<1|1,mid+1,r,s,t)%mod;

27else

return (query(rt<<1,l,mid,s,t)+query(rt<<1|1,mid+1,r,s,t))%mod;28}

29int query1(int rt,int l,int r,int s,int

t)38

void modify(int rt,int l,int r,int

w)44

int mid=(l+r)>>1;45

if(w<=mid) modify(rt<<1

,l,mid,w);

46else modify(rt<<1|1,mid+1

,r,w);

47 tree[rt]=(tree[rt<<1]+tree[rt<<1|1])%mod;

48 cnt[rt]=cnt[rt<<1]+cnt[rt<<1|1

];49}50

void solve(int

x)59

intmain()

69 printf("

%d\n

",ans);

70return0;

71 }

view code

5 24 樹種統計

隨著衛星成像技術的應用,自然資源研究機構可以識別每一棵樹的種類。請編寫程式幫助研究人員統計每種樹的數量,計算每種樹佔總數的百分比。輸入格式 輸入首先給出正整數n 10 5 隨後n行,每行給出衛星觀測到的一棵樹的種類名稱。種類名稱由不超過30個英文本母和空格組成 大小寫不區分 輸出格式 按字典序遞增輸...

7 24 樹種統計

隨著衛星成像技術的應用,自然資源研究機構可以識別每一棵樹的種類。請編寫程式幫助研究人員統計每種樹的數量,計算每種樹佔總數的百分比。輸入首先給出正整數n 10 5 隨後n行,每行給出衛星觀測到的一棵樹的種類名稱。種類名稱由不超過30個英文本母和空格組成 大小寫不區分 按字典序遞增輸出各種樹的種類名稱及...

PTA 樹種統計

5 12 樹種統計 25分 隨著衛星成像技術的應用,自然資源研究機構可以識別每一棵樹的種類。請編寫程式幫助研究人員統計每種樹的數量,計算每種樹佔總數的百分比。輸入格式 輸入首先給出正整數n le 10 5 10 5 隨後n行,每行給出衛星觀測到的一棵樹的種類名稱。種類名稱由不超過30個英文本母和空格...