51nod 1203 JZPLCM(線段樹 鍊錶)

2021-09-30 17:47:42 字數 2932 閱讀 6913

傳送門

一道很有意思的題。

題意簡述:給乙個數列,多次詢問區間的lcm

lcmlc

m,答案對1e9

+7

1e9+7

1e9+

7取模。

思路:首先考慮到乙個區間的lcm

lcmlc

m就是其中所有出現過的素數的最大冪的乘積。

因此想到分開維護每乙個素數。

然後由於p

ap^a

pa對答案原本是有p

ap^a

pa自己那麼多貢獻的,現在考慮將它拆分成p,p

2,p3

,...

,p

ap,p^2,p^3,...,p^a

p,p2,p

3,..

.,pa

共a

aa個數,每個數有p

pp的貢獻,那麼對於答案的總貢獻還是p

ap^a

pa的 。所以我們把每乙個數都拆分。

設p =a

1k1a

2k2.

..am

km

p=a_1^a_2^...a_m^

p=a1k1

​​a2

k2​​

...a

mkm​

​那麼我們將它拆成一段二元組(a1

,a1)

,(a1

2,a1

),..

.,(a

1k1,

a1),

(a2,

a2),

(a22

,a2)

,...

,(a2

k2,a

2),.

..,(

am,a

m),(

am2,

am),

...,

(amk

m,am

)(a_1,a_1),(a_1^2,a_1),...,(a_1^,a_1),(a_2,a_2),(a_2^2,a_2),...,(a_2^,a_2),...,(a_m,a_m),(a_m^2,a_m),...,(a_m^,a_m)

(a1​,a

1​),

(a12

​,a1

​),.

..,(

a1k1

​​,a

1​),

(a2​

,a2​

),(a

22​,

a2​)

,...

,(a2

k2​​

,a2​

),..

.,(a

m​,a

m​),

(am2

​,am

​),.

..,(

amkm

​​,a

m​)第一元表示數的值,第二元表示數的貢獻。

然後現在相當於在重構之後的序列裡詢問區間中所有數的貢獻之積,相同的數貢獻只能算一次,這不就是hhhh

hh的項鍊嗎,於是用鍊錶維護一下即可。

**:

#include

#define ri register int

#define fi first

#define se second

using

namespace std;

inline

intread()

typedef

long

long ll;

const

int mod=

1e9+

7,n=

50005

,m=8e5+5

;int n,m,tot,inv[n]

,l[m]

,r[m]

,pos[n]

,nxt[m]

,ans[n]

,bit[m]

;struct queryqry[n]

;typedef pair<

int,

int> pii;

pii val[m]

;inline

bool

cmp(

const query&a,

const query&b)

inline

intmul

(int a,

int b)

inline

intlowbit

(int x)

inline

void

update

(int x,

int v)

inline

intquery

(int x)

intmain()

}if(x^1

)val[

++tot]

=pii

(x,x)

; r[i]

=tot;

}fill

(bit+

1,bit+tot+1,

1);for

(ri i=

1;i<=tot;

++i)

for(ri i=

1;i<=m;

++i)qry[i]

.l=l[

read()

],qry[i]

.r=r[

read()

],qry[i]

.id=i;

sort

(qry+

1,qry+m+

1,cmp)

;for

(ri i=

1,j=

0;i<=tot;

++i)

for(ri i=

1;i<=m;

++i)cout<<<

'\n'

;return0;

}

51nod 貪心入門

有若干個活動,第i個開始時間和結束時間是 si,fi 活動之間不能交疊,要把活動都安排完,至少需要幾個教室?分析 能否按照之一問題的解法,每個教室安排盡可能多的活動,即按結束時間排序,再貪心選擇不衝突的活動,安排乙個教室之後,剩餘的活動再分配乙個教室,繼續貪心選擇 反例 a 1,2 b 1,4 c ...

51nod 迷宮問題

1459 迷宮遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 你來到乙個迷宮前。該迷宮由若干個房間組成,每個房間都有乙個得分,第一次進入這個房間,你就可以得到這個分數。還有若干雙向道路鏈結這些房間,你沿著這些道路從乙個房間走到另外乙個房間需要一些時間。遊戲規定了你的...

51nod 硬幣遊戲

有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...