函式
做法:本題需要用到思維。
如果在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 很多的問題,通過小範圍資料打表,是非常便於幫助分析題目的性質的,...