上次題似乎有點水
大概到noi之前會進行一些針對自己薄弱點的專項訓練吧 bz
oj1419re
disg
ood
額...
dp[i
][j]
表示re
d剩i張
,bla
ck剩j
張的期望
每次期望×概率
轉移就行
注意如果期望在
0以下就
不取了
空間不夠
,所以滾
一下
//code by liuchenrui
#include
#define n 200010
using
namespace
std;
double dp[2][5005];
char s[100];
int main()
} sprintf(s+1,"%.10f",dp[r&1][b]);
int t;
for(int i=1;;i++)if(s[i]=='.')
s[t+7]='\0';puts(s+1);
}
bzoj 3036
說好的不刷水題di
s[i]
表示i點
到達終點
的期望距
離 期望
×概率轉
移
//code by liuchenrui
#include
#define n 200010
using namespace std;
inline void splay(int &v)
while(c>='0' && c<='9')
v*=p;
}int nxt[n],fir[n],sz,to[n],len[n],q[n],du[n],n,m;
double dis[n],p[n];
void add(int
x,int
y,int z)
int main()
for(int i=1;iif(du[i])p[i]=1./du[i];
int head=0,tail=1;q[1]=n;
while(head^tail)
}printf("%.2f",dis[1]);
}
bz
oj1426
想了好久都不會
於是看了題解f[
i]表示
已經買了
i種票,
期望再買
多少張票
可以湊全
f[i]=f
[i]∗
(in)
+f[i
+1]∗
(n−i
n)+1
這個似乎挺好理解的:下一次買,要麼相同,要麼不同,乘以分別的概率即可 f[
i]−f
[i]∗
(in)
=f[i
+1]∗
(n−i
n)+1
f[i]∗(
n−in
)=f[
i+1]
∗(n−
in)+
1 f[
i]=(
f[i+
1]∗(
n−in
)+1)
∗(nn
−i) f[
i]=f
[i+1
]+nn
−ig[
i]表示
期望還要
花多少錢
g[i]=(
n−in
)∗(g
[i+1
]+f[
i+1]
)+(i
n)∗(
g[i]
+f[i
])+1
什麼意思呢?
下一次可能買
錯,相當
於這張郵
票1元,
同時相當
於後面漲
了1元,
其他沒變
g[i]=(
n−in
)∗(g
[i+1
]+f[
i+1]
)+(i
n)∗g
[i]+
(in)
∗f[i
]+1 n−
ing[
i]=(
n−in
)∗(g
[i+1
]+f[
i+1]
)+(i
n)∗f
[i]+
1 g[
i]=g
[i+1
]+f[
i+1]
+n∗i
(n−i
)∗n∗
f[i]
+nn−
i an
s=g[
0]#include
const
int n=10010;
using
namespace
std;
double f[n],g[n];
int main()
printf("%.2f",g[0]);
}
Tarjan演算法專練
題意 給乙個圖判斷是否是強連通圖。題解 利用tarjan計算圖中強連通分量的個數,如果為1則是強連通圖,否則不是。includeusing namespace std const int n 2e4 100 typedef long long ll vectorg n bool is instack...
樹上問題專練 電壓
c電壓時間限制 10000 ms 空間限制 kb 評測說明 1s,256m 問題描述 joi社的某個實驗室中有著複雜的電路。電路由n個節點和m根細長的電阻組成。節點被標號為1 n 每個節點有乙個可設定的狀態 高電壓 或者 低電壓 每個電阻連線兩個節點,只有一端是高電壓,另一端是低電壓的電阻才會有電流...
動態逆序對專練
就是三倍經驗 維護乙個序列,每次修改後求出當前序列逆序對個數。題目讓我們求出 sum n sum n a i a j 也就是讓我們求出滿足 pos ia j 的點對數量。對於不修改的情況,這顯然是乙個三維偏序問題,用樹狀陣列或歸併處理都可以。我這麼懶當然是用樹套樹啦 樹狀陣列維護序列,值域線段樹維護...