Codeforces 1312D 組合數學

2022-05-22 18:21:10 字數 1197 閱讀 7486

題意:給你n

'>n

n和m'>m

m,問滿足以下條件的數列的個數:

思路:數列有且僅有一對相等的數,所以每次要從m個數中挑n-1個數,既是組合數cn-1m。當找到n-1個數的時候,要滿足先嚴格遞增後嚴格遞減,嚴格遞增或嚴格遞減,所以最大值要確定在中間,我們只需要確定最大值兩邊的數即可,因為要存在一對相等的數且滿足單峰數列,要選擇的這個存在兩次的數不能是這個最大值,要從n-2中選擇。當選擇出來了出現兩次的數的時候,把這個數分別放在最大值的兩邊,接下來只需要計算剩餘n-3個數分配在兩邊所出現的可能性,既是2n-2。

答案即為

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

//const int maxn = 1e5+5;

#define ll long long

#define inf 0x3f3f3f3f

#define for(i,a,b) for( int i = a;i <= b;++i)

#define bug cout<

ll lcm(ll a,ll b)

using

namespace

std;

const ll mod = 998244353

;ll pow_(ll a,ll b)

return

res;}

ll cnub(ll n,ll m)

intmain()

ll ans = ((cnub(m,n-1) * (n-2) % mod) % mod * pow_(2,n-3)%mod) %mod;

cout

}

Codeforces 703D 樹狀陣列

codeforces 703d 題意 給1e6長度的區間,每個單位代表乙個數。給1e6個詢問,每次問區間內出現次數為偶數次的數異或和。思路 賽中的時候想莫隊水過去,結果pretest都沒過233 正解是樹狀陣列。首先假設是奇數次的話,就是乙個簡單字首和。現在偶數次,有乙個處理技巧就是記錄這個區間出現...

codeforces 912D 期望計算

題目鏈結 題意 在乙個n m的魚塘裡面放置k條魚,每次可以選定乙個r r的矩陣並獲得矩陣內魚的數量的分數。請問該如何在魚塘裡面放置魚,使得最後的期望得分最大。思路 直接通過列舉放置魚的位置計算期望得分明顯非常非常不現實,於是我們換一種計算思路我們去計算各點放置魚之後可以得到的期望得分,然後取前k大的...

codeforces 523D 優先佇列

題意 給你n個任務單和k個機器,每個任務單有兩個變數開始的時間,完成所需要的時間,問你最優去做的話,每個訂單的結束時間是?題解 題目保證了資料是遞增排序的,那麼我們就不用sort了,直接做。然後這裡有個小套路 因為題目可以有k個機器,那我們可以先用k個0進去乙個優先佇列以達到模擬k個優先佇列的作用,...