51nod1799 二分答案 分塊打表

2021-08-07 05:57:12 字數 727 閱讀 3908

分析:

要走到乙個位置的話一共要往左或者往右走o(

logn

)

次,而且每一步都必須走對。因為對於題目中給出的**,

無論k是什麼樣的數,

二分過程的次數都是固定的。

每走一步只和ami

d

的大小關係有關,因此有一些位置只能放≤m

或者>

m的數,其他

位置可以隨便放。階乘可

以分段打表。

#includeusing namespace std;

#define ll long long

#define n 105

const int mod = 1e9+7;

const int lim = 1e7;

ll n, m, k;

ll fac[n] = ;

ll getfact(ll x)

void solve()

ll ans = 1;

for(ll i = m; i >= m-cl+1; i--) ans = ans*i%mod;

for(ll i = n-m; i >= n-m-cr+1; i--) ans = ans*i%mod;

ans = ans*getfact(n-cl-cr) % mod;

cout<>n>>m>>k)

return 0;

}

51Nod1799 二分答案

lyk最近在研究二分答案類的問題。對於乙個有n個互不相同的數且從小到大的正整數數列a 其中最大值不超過n 若要找乙個在a中出現過的數字m,乙個正確的二分程式是這樣子的 l 1 r n mid l r 2 while l r 最終a r 一定等於m。但是這個和諧的程式被熊孩子打亂了。熊孩子在一開始就將...

51nod 1799 思維 二分 數論 分塊打表

題目鏈結 很好的題目,很早就關注了此題,但一直沒看懂題解,今天在紙上模擬了很久終於了有了新的感悟 對於這種 求期望 n m od1e 9 7求期望 n mod 1e9 7 求期望 n mod1 e9 7 的問法實際上就是求方案數。雖然數列完全打亂了,但其實對於二分結果的影響並沒有直觀上的那麼大。形如...

1799 二分答案

lyk最近在研究二分答案類的問題。對於乙個有n個互不相同的數且從小到大的正整數數列a 其中最大值不超過n 若要找乙個在a中出現過的數字m,乙個正確的二分程式是這樣子的 l 1 r n mid l r 2 while l r 最終a r 一定等於m。但是這個和諧的程式被熊孩子打亂了。熊孩子在一開始就將...