1. 题面梗概
中译中 :老师和同学玩游戏,老师随机出一个 [ 1 , 20 ] [1,20] [ 1 , 20 ] 中的数,n − 1 n - 1 n − 1 个同学会以最优策略,同样出一个 [ 1 , 20 ] [1,20] [ 1 , 20 ] 的数,求老师的收益期望。
规则 :老师给学生 x x x 分,学生给老师 y y y 分。若 x > y x > y x > y ,则老师 + 10 +10 + 10 分;若 x < y x < y x < y ,则学生 + 10 +10 + 10 分。
2. 逻辑推导
既然同学们会以最有策略出 y y y ,那么他们的策略肯定是相同的,我们只需要算出一个期望,再乘上 ( n − 1 ) (n - 1) ( n − 1 ) 即可。
设学生选 y y y 时,老师的期望收益为 E ( y ) E(y) E ( y ) ,那么老师得分如下:
S c o r e ( x , y ) = y − x + { 10 x > y 0 x = y − 10 x < y Score(x, y) = y - x + \begin{cases}
10 & x > y \\
0 & x = y \\
-10 & x < y \\
\end{cases}
S cor e ( x , y ) = y − x + ⎩ ⎨ ⎧ 10 0 − 10 x > y x = y x < y
那么总期望就是:
E ( y ) = ( n − 1 ) × min y = 1 20 ( ∑ x = 1 20 ( 1 20 × s c o r e ( x , y ) ) ) E(y) = (n - 1) \times \min_{y = 1}^{20}(\sum_{x=1}^{20}(\frac{1}{20}\times score(x,y)))
E ( y ) = ( n − 1 ) × y = 1 min 20 ( x = 1 ∑ 20 ( 20 1 × scor e ( x , y )))
接下来就很简单了,对于如此小的数据范围,直接跑暴力就能算出答案了。
3. 代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include <bits/stdc++.h> using namespace std;using ll = long long ;using PII = pair<int , int >;const int maxn = 1e5 + 50 ;const double inf = 1e18 ;int n;int main ( ) { ios::sync_with_stdio (0 ); cin.tie (0 ); cout.tie (0 ); cin >> n; double ans = inf; for ( int y = 1 ; y <= 20 ; ++ y ) { double cur = 0 ; for ( int x = 1 ; x <= 20 ; ++ x ) { double score = y - x; if ( x > y ) score += 10 ; else if ( x < y ) score -= 10 ; cur += score; } double avg = cur / 20.0 ; ans = min ( ans, avg ); } ans = ( n - 1 ) * ans; cout << fixed << setprecision (4 ) << ans << '\n' ; return 0 ; }
4. 还没结束
我们重新对公式进行推导:
E ( y ) = 1 20 [ ∑ x = 1 20 ( y − x ) + ∑ x = 1 20 ( 10 ⋅ [ x > y ] ) + ∑ x = 1 20 ( − 10 ⋅ [ x < y ] ) ] E(y) = \frac{1}{20} \left[\sum_{x=1}^{20}(y-x) + \sum_{x=1}^{20}(10 \cdot [x > y]) + \sum_{x=1}^{20}(-10 \cdot [x < y]) \right]
E ( y ) = 20 1 [ x = 1 ∑ 20 ( y − x ) + x = 1 ∑ 20 ( 10 ⋅ [ x > y ]) + x = 1 ∑ 20 ( − 10 ⋅ [ x < y ]) ]
基础分 :∑ ( y ) + ∑ ( x ) = 20 y − 20 × 21 2 = 20 y − 210 \sum(y) + \sum(x) = 20y - \frac{20\times21}{2} = 20y -210 ∑ ( y ) + ∑ ( x ) = 20 y − 2 20 × 21 = 20 y − 210
老师加分 :x > y ⟺ x ∈ ( y , 20 ] x > y \iff x \in (y,20] x > y ⟺ x ∈ ( y , 20 ] ,共有 20 − y 20-y 20 − y 个可能,得分为 10 × ( 20 − y ) = 200 − 10 y 10 \times (20 - y) = 200 - 10y 10 × ( 20 − y ) = 200 − 10 y 。
老师减分 :x < y ⟺ x ∈ [ 1 , y ) x < y \iff x \in [1,y) x < y ⟺ x ∈ [ 1 , y ) ,共有 y − 1 y-1 y − 1 个可能,得分为 − 10 × ( y − 1 ) = − 10 y + 10 -10 \times (y - 1) = -10y + 10 − 10 × ( y − 1 ) = − 10 y + 10 。
S u m = ( 20 y − 210 ) + ( 200 − 10 y ) + ( − 10 y + 10 ) = 0 Sum = (20y - 210) + (200 -10y) + (-10y + 10) = 0
S u m = ( 20 y − 210 ) + ( 200 − 10 y ) + ( − 10 y + 10 ) = 0
惊人的发现,期望永远是 0 0 0 。本质是因为 20 20 20 个数和 + 10 / − 10 +10/-10 + 10/ − 10 的机制正好平衡了。
4. 复盘