洛谷 P6046 純粹容器 senpai 題解

2021-10-04 23:22:49 字數 3182 閱讀 3609

題目傳送門

題目大意:給出 n

nn 個物品,第 i

ii 個物品強度為 a

ia_i

ai​,每次隨機選擇相鄰兩個進行決鬥,強度大的活,小的就沒了。問每個物品期望活多少輪。

很容易想到的是,每個物品的生死,取決於什麼時候遇到它左邊第乙個比他大的或右邊第乙個比他大的物品。

考慮第 x

xx 個物品,設左邊第乙個比他大的位置在 pre

prepr

e,右邊第乙個比他大的在 nex

tnext

next

。設 s[i

]s[i]

s[i]

表示物品 x

xx至少活了 i

ii 輪的概率,他等於 1−1-

1−物品x在i-1輪內去世的概率

物品 x

xx 要在 i

ii 輪內去世,要麼就是碰到 pre

prepr

e,要麼就是碰到 nex

tnext

next

了,做一下容斥概率就是:

c n−

1−(x

−pre

)i−(

x−pr

e)+c

n−1−

(nex

t−x)

i−(n

ext−

x)−c

n−1−

(nex

t−pr

e)i−

(nex

t−pr

e)cn

−1

i\frac ^+c_^-c_^} ^i}

cn−1i​

cn−1

−(x−

pre)

i−(x

−pre

)​+c

n−1−

(nex

t−x)

i−(n

ext−

x)​−

cn−1

−(ne

xt−p

re)i

−(ne

xt−p

re)​

​ c n−

1−(x

−pre

)i−(

x−pr

e)

c_^cn

−1−(

x−pr

e)i−

(x−p

re)​

c in

ext−

pr

ec_i^

cinext

−pre

​ 就是前面兩種情況的重疊部分,也就是 pre

prepr

e 到 nex

tnext

next

這一段全部去世了。

然後 s[i

]s[i]

s[i]

累加起來就是 x

xx 總的存活輪數期望了,時間複雜度 o(n

2)

o(n^2)

o(n2)。

我這題**有點奇奇怪怪的,雖然能 acac

ac……具體你們看**:

#include

#define maxn 110

//不知道為什麼,陣列一定要開大一點,只開到60的話會wa後面幾個點,也不知道**陣列越界了……

#define mod 998244353

int n,a[maxn]

,ans[maxn]

;int fac[maxn]

,inv_fac[maxn]

;int

ksm(

int x,

int y)

return re;

}#define inv(x) ksm(x,mod-2)

void

work()

intc

(int x,

int y)

int pre,next;

intmain()

for(

int j=i+

1;j<=n;j++)if

(a[j]

>a[i])if

(pre==-1

&&next==-1

)ans[i]

=n-1

;else

if(pre==-1

&&next!=-1

)for

(int j=

1;j1;j++

) ans[i]

=(ans[i]+(

1-1ll*

c(n-1-

(next-i)

,j-(next-i))*

inv(

c(n-

1,j)

)%mod+mod)

%mod)

%mod;

else

if(pre!=-1

&&next==-1

)for

(int j=

1;j1;j++

) ans[i]

=(ans[i]+(

1-1ll*

c(n-1-

(i-pre)

,j-(i-pre))*

inv(

c(n-

1,j)

)%mod+mod)

%mod)

%mod;

else

for(

int j=

1;j2;j++

) ans[i]

=(ans[i]+(

1ll-

1ll*((

c(n-1-

(i-pre)

,j-(i-pre))+

c(n-1-

(next-i)

,j-(next-i)))

%mod-

c(n-1-

(next-pre)

,j-(next-pre)

)+mod)

%mod*

inv(

c(n-

1,j)

)%mod+mod)

%mod)

%mod;

printf

("%d "

,ans[i]);

}}

洛谷 P3601 簽到題

題目描述 我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 i lrqi anda o i mo d666623333 sum r qiandao i mod 666623333 i lr qian dao i mo d666 6233...

洛谷 P1728 「程式設計題」

題目背景 高手在一年級 找不到可以怎麼樣來鄙視小盆友以獲得女神的歡心,於是他決定玩電競來藐視那些連開機都不知道要按 的小盆友。他玩的遊戲叫 minecraft 其中乙個核心的內容是給技能加點 minecraft要加點?他找到你,並答應如果自己追到了女神,他就請你去他家吃飯,油炸蘋果 香辣梨子 水煮活...

洛谷P3601 簽到題

我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 sum r qiandao i mod 666623333 先線性篩出 1 sim 10 6 的質數,然後計算他們對 l sim r 的數的貢獻即可。注意噹噹 l sim r 的數最後可...