dp
頭一次在比賽中做出來數論題qwq寫完 t1 看 t2 ,看見是數學題直接自閉。看完 t3 t4 發現後面的題更自閉滾回來看 t2 。
首先試圖定義 dp[i][j][k] 為比了 \(i\) 場,平了 \(j\) 場,贏了 \(k\) 場的期望得分,然後發現資料範圍 \(n \leq 2000\) 給自己期望乙個 \(0pts\) ,當場自閉。
又試圖搞別的方法,定義 f[i][j] 為比了 i 場,平了 j 場的概率,g[i][j] 為在非平局的 i 場中獲勝 j 場的概率,那麼可以推出當平了 i 場的時候對答案的貢獻是 \((i+1)\times f_i \times \sum\limits_g_\) ,最終答案即為 \(\sum\limits_^n \left[(i+1)\times f_i \times \sum\limits_g_\right]\) 。
在推 \(f\) 和 \(g\) 的遞推式的時候發現好複雜,又逐漸自閉……
我們可以找到直接推出 \(f_\) 的方法 : \(f_ = c_i^j\times\left(\frac\right)^j \times \left(\frac\right)^\)
但是發現 \(g\) 的式子並不是很好推,然而突然發現這裡兩個人獲勝的概率是相同的,因此可以想到乙個人贏比輸少與輸比贏少的概率應當是相同的,要注意當 \(2\mid i\) 的時候,可以出現輸贏次數相同的情況,我們將這種情況的概率減掉再除以二,其餘情況直接返回 \(\frac\) 即可。
我們只需要列舉平局的數量,即可線性求出答案。
code:
#include #include #include #define ll long long
#define prev prev
using namespace std;
int read()
while(ch >= '0' && ch <= '9')
return a*x;
}const int n=3e6+7,p=998244353;
int n,p;
ll prev;
ll tmp[n],rev[n];
ll fpow(ll a,ll x)
ll f[n],g[n],h[n];
inline ll c(int a,int b)
inline ll f(int i,int j)
inline ll g(int x)
int main()
for(register int i = 1;i <= n;i ++)
for(register int i = 1;i <= n;i ++)
ll ans = 0;
for(register int i = 0;i <= n;i ++)
printf("%lld",ans);
return 0;
}
20151006模擬賽總結
今天上午去一中,又考了個模擬賽。這次的題有點考思維。我感覺這個第一題難度稍微大了點。一般noip第一題要麼是簡單的模擬,要麼是裸的簡單演算法,這次的第一題要自己構造演算法,並且還是列舉和貪心套在一起。我開始想的是列舉 揹包,複雜度為n 3,但是資料範圍沒給出三次方的分。於是我就覺得不靠譜。然後發現列...
20151031模擬賽總結
今天去一中,考了個模擬賽,真是坑。本來在八中食堂愉快的享受我的早飯 週末早上的番茄雞蛋燙飯 韭菜肉餅簡直爽!然後geng4512就跑過來說要去一中考試,然後兩口喝完燙飯就和他一起狂跑過去了。這次第一題組合數取模,模的不是質數。想了好大半天,沒什麼想法,然後看了下後面的題,又回來做這道題,想起了階乘分...
20160521模擬賽總結
20160521模擬賽是程式設計實習課程安排的第一次模擬賽 比賽鏈結 備註 這個系列模擬賽屬於程式設計實習練習賽,題目有很大一部分事先練習過,做這些題目為了練習碼 熟練度,也為了進行模擬考試練習的機會,所以這個系列模擬賽我每一次都參加,作為練習 題目清單見下 已解決 01 浮點數求高精度冪 已解決 ...