有\(n+m\)個詢問,其中\(n\)個是yes,\(m\)個是no,你回答乙個問題之後會知道這個問題的答案,求最優策略下你期望對多少個。
顯然最優策略是回答多的那個。
不妨設\(n \geq m\),將正確答案畫在二維平面上,發現是\((n,m)\)到\((0,0)\)的一條路徑。
畫一條對角線\(y=x\),我們發現如果路徑不經過對角線那麼答案就是\(n\)。
我們考慮計算答案的增量,發現在對角線處才會貢獻有\(\frac\)的概率貢獻\(1\)的增量,所以答案是
\(n+\frac_}}\)。
#includeusing namespace std;
typedef long long ll;
const ll mod=998244353;
ll f[1000005],invf[1000005];
ll qpow(ll a,ll b)
return ret;
}void init(ll n=1000000)
ll c(ll n,ll m)
int main()
ans=ans*qpow(c(n+m,n),mod-2)%mod;
ans=(ans+n)%mod;
printf("%lld\n",ans);
return 0;
}
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
數學 組合數學
mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...
組合數學筆記
從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...