BZOJ1432 函式(ZJOI2009) 思維

2021-08-29 16:21:40 字數 1149 閱讀 4066

函式

做法:本題需要用到思維。

如果在x

xx座標為負無窮時,把函式從下到上編號為1

11~n

nn,那麼在向右掃時,一旦遇到乙個交點,就表示交的這兩個函式上下位置進行交換。因為每兩個函式間有且僅有乙個交點,且不會有三個函式共點,因此這些交換是先後進行的,且一定是發生在下面的函式編號比上面的函式小時,那麼最後在x

xx座標為正無窮時必定會換為從下到上n

nn ~ 1

11的形式。於是現在要求第k

kk層的段數,實際上就是在交換的過程中,從下到上第k

kk個位置上編號的最小變動次數+1+1

+1。根據推理,乙個位置上編號最小的變動次數為min⁡(

2k−1

,2(n

−k+1

)−1)

\min(2k-1,2(n-k+1)-1)

min(2k

−1,2

(n−k

+1)−

1)。首先這兩種情況是對稱的,因此我們只考慮k≤(

n−k+

1)

k\le (n-k+1)

k≤(n−k

+1)的情況,我們肯定考慮把右邊最大的k

kk個數挪到左邊去,那麼最小的交換次數就是,前k−1

k-1k−

1個數因為要經過那個位置,所以都產生2

22的貢獻,而最後乙個數正好放在那個位置上,因此只產生1

11的貢獻,總貢獻就是2k−

12k-1

2k−1

了,那麼另一種情況只要對稱考慮即可。因此答案為min⁡(

2k,2

(n−k

+1))

\min(2k,2(n-k+1))

min(2k

,2(n

−k+1

)),n =k

=1

n=k=1

n=k=

1時需要特判,這樣我們就非常簡單地解決了這一題。

以下是本人**:

#include

using

namespace std;

int n,k;

intmain()

BZOJ 4499 線性函式

time limit 20 sec memory limit 256 mb submit 177 solved 127 submit status discuss 小c最近在學習線性函式,線性函式可以表示為 f x kx b。現在小c面前有n個線性函式fi x kix bi 他對這n個線性函式執行m...

bzoj4499 線性函式

題目描述 小 c 最近在學習線性函式,線性函式可以表示為 f x kx b 現在小 c 面前有 n 個線性函式 f i x k ix b i 他對這 n 個線性函式執行 m 次操作。每次可以 1.m i k b 代表把第 i 個線性函式改為 f i x kx b 2.q l r x 返回 f r f...

bzoj4173(尤拉函式)

資料大 10 15次方 公式複雜 不知道怎麼化簡 然後,感覺滿足打表找規律,發現sigema phi k k屬於s n,m n m。再求兩個phi就好,注意在括號裡面mod之後,需要在括號外面再mod一次,否則會wa。標準證明 總結1 很多的問題,通過小範圍資料打表,是非常便於幫助分析題目的性質的,...