1001 tetrahedron
直角三稜錐有乙個性質:底面面積的平方等於三個側面面積的平方和。
然後根據體積可以算出來h,
1 h2
=a2b
2+a2
c2+b
2c2a
2b2c
2\frac=\frac
h21=a
2b2c
2a2b
2+a2
c2+b
2c2
這樣在o(n)的時間是沒法算期望的,再化簡一步就好了
1 h2
=1a2
+1b2
+1c2
\frac=\frac+\frac+\frac
h21=a
21+
b21
+c21
根據 e(x+y)= e (x)+ e(y) 可得
e (1
h2)=
3e(1
a2
)e(\frac)=3e(\frac)
e(h21
)=3e
(a21
)所以求1到n的平方的倒數的字首和就好。
#include
using
namespace std;
typedef
long
long ll;
const
int n=
6e6+10;
const
int mod=
998244353
;int inv[n]
,sum[n]
;void
init()
intmain()
}
1009 *****folding
這幾次紙可以發現展開之後的紙會被切割成網格,左折和右折的效果是一樣的,上折和下折的效果是一樣的,如果左右折的次數是x,上下折的次數是y,最終會被分成(2x
+1)∗
(2y+
1)
(2^x+1) * (2^y+1)
(2x+1)
∗(2y
+1)份,最終的份數只與摺疊的次數有關,與摺疊的先後順序沒有關係。
將左右折看做乙個操作,上下折看做乙個操作,總共會有 2
n2^n
2n種操作,如果左右折了i次,那麼上下折就是n-i次,這種情況的次數就是
c ni
∗(2i
+1)∗
(2n−
i+1)
c_^*(2^i+1)*(2^ +1)
cni∗(
2i+1
)∗(2
n−i+
1)所以:ans
=∑i=
0ncn
i(2i
+1)(
2n−i
+1)2
nans=\frac^c_^(2^i+1)(2^+1)}
ans=2n
∑i=0
ncn
i(2
i+1)
(2n−
i+1)=∑
i=0n
(cni
2n+c
ni+c
ni2i
+cni
2n−i
)2
n=\frac^(c_^2^n+c_^+c_^2^i+c_^2^)}
=2n∑i=
0n(
cni
2n+c
ni+
cni
2i+c
ni2
n−i)=2
2n+2
n+∑i
=0nc
ni2i
+∑i=
0ncn
n−i2
n−i2
n=\frac+2^n+\sum_^c_^2^i+\sum_^c_^}}
=2n22n
+2n+
∑i=0
ncn
i2i
+∑i=
0nc
nn−i
2n−
i= 22
n+2n
+2∗3
n2
n=\frac+2^n+2*3^}
=2n22n
+2n+
2∗3n
#include
using
namespace std;
typedef
long
long ll;
const
int mod=
998244353
;int t;
ll n;
ll ksm
(ll a,ll b)
return res;
}int
main()
return0;
}
1012 set1
首先前n/2個數是一定會被刪掉的所以都是0,那麼當i>n/2時,要想保留地i個數,前i-1個數一定會被刪去,後面的n-i個數也要被刪,後面的這n-i個數一定不會最為最小值被刪因為i還沒被刪,所以從前i-1個數中選n-i個數與他們配對,方案就是ci−
1n−i
c_^ci
−1n−
i* (n-i)! ,前i-個數中剩下了i-1-n+i個數記為cnt,cnt一定是偶數,每次刪之前這幾個數的最小值都是確定的只能從剩下的數中再選乙個數。所以方案數就是 比cnt小的所有奇數的乘積,兩式相乘就是i被剩下的方案數。
總的方案數是多少:每次刪除時最小值是確定的n是奇數,所以等於 比n小的所有偶數的乘積。
#include
using
namespace std;
const
int n=
5e6+
10,mod=
998244353
;typedef
long
long ll;
int t,n,pre[n]
,inv[n]
,po[n]
,p[n]
;ll ksm
(ll a,ll b)
return res;
}ll c
(int n,
int m)
void
init()
intmain()
for(
int i=
1;i<=n/
2;i++
)printf
("0 ");
ll res=
ksm(pre[n-1]
,mod-2)
;printf
("%lld "
,po[n/2]
*res%mod)
;for
(int i=
(n+1)/
2+1;i)printf
("%lld"
,p[n-2]
*res%mod)
;puts(""
);}return0;
}
2020 杭電多校第6場
1009 divisibility 題意 十進位制下判斷乙個數n能否被3整除的方法是 判斷n的各位數的和能否被3整除,現給你乙個b和x,判斷再b進製下能否用這種方法判斷所有數能否整除x。打表可以找規律。include using namespace std typedef long long ll ...
杭電多校2020第7場 E Expectation
有一種做法 列舉每個球滾到哪個坑里,算出其概率,再乘上球到這個坑的距離,把結果相加。但是你會發現,這樣子很難處理,而且有許許多多複雜的情況。我們換乙個角度 對於每乙個 i 和 i 1 之間的線段,我們算其被經過的期望次數。手玩一會兒不難發現有如下結論 對於一條線段,如果其左邊為洞,右邊為球,那麼肯定...
2020杭電多校
hdu 6836 對於一張圖,每個生成樹的權值為所有邊按位與的結果,求生成樹期望權值。樸素解法 暴力求出每乙個生成樹,累積權值和,然後除生成樹總數。int型別只有31位,既然是與的結果,對於每一條生成樹所有的邊該位都應該是1,按位列舉每一位,求出該位為1的生成樹權值大小,將結果累積到答案裡。incl...