點對遊戲 題解

2022-06-22 12:09:12 字數 2421 閱讀 8625

這道題相對來說比較簡單,主要考察對於期望的深刻理解。

其實,我是屬於那種對數學期望一竅不通的人。我個人感覺做期望題可以從以下三個方面入手:

考慮每個元素對答案的貢獻。比如說你做乙份卷子,只有25道選擇題,一道題4分,每道題蒙對的概率是\(\dfrac\)(假設你和我一樣是個啥都不會的菜雞,只能蒙題),那麼一道題對於期望的貢獻就是\(4\times \dfrac=1\),所以你的期望得分就是25分。並不需要將每種情況列出來,算每種情況的概率乘得分,也就是說不需要像高中數學大題一樣求分布列。

把「期望」理解為「估摸」,這一種思考方式常用於期望dp。比如給一張有向無環圖和起點\(s\)和終點\(t\),開始你站在起點,每次等概率的往下走,問走到終點的期望步數。那麼\(dp(u)\)表示走到從\(u\)走到\(t\)的期望步數。那麼我們就把它理解成從\(u\)走到\(t\)「估摸著」走\(dp(u)\)步。狀態轉移方程也就不難列出。

對於那種有後效性的題,不能用期望dp,就只能使用高斯消元。一般這樣考慮,先求出點的期望,用點的期望再去求出邊的期望。

對於本題來說,我們發現a、b、c三個人取點的順序是無所謂的。這就好比是教室裡同學們抽籤,誰先抽都無所謂,抽到的概率都一樣。

我們設\(cnt\)為距離為幸運數的點對個數,設\(k\)為某個人一共要取的點的個數。那麼這個人的答案:\(\dfrac^}\times cnt=\dfrac}}\times cnt=\dfrac\times cnt\)。

至於\(cnt\)怎麼求,點分治模板題。

#include #include #include using namespace std;

#define filein(s) freopen(s".in", "r", stdin)

#define fileout(s) freopen(s".out", "w", stdout)

inline int read(void)

while (ch >= '0' && ch <= '9')

return f * x;

}const int maxm = 15, maxn = 50005;

int n, m, lucky[maxm], head[maxn], tot = 1;

int p[maxn], q[maxn], ans;

bool vis[maxn];

struct edge

edge(int _y, int _next) : y(_y), next(_next) {}

} e[maxn << 1];

inline void connect(int x, int y)

inline int get_size(int x, int fa)

return res;

}inline int get_wc(int x, int fa, int tot_size, int &wc)

mx = max(mx, tot_size - res);

if (mx * 2 <= tot_size) wc = x;

return res;

}void get_dist(int x, int fa, int dist, int &nq)

}inline void count(int a, int len, int k, int t)

while (true)

l1 = min(l1, r - 1);

l2 = min(l2, r - 1);

ans += (l1 - l2) * t;

}}void solve(int x)

}for (int j = 1; j <= nq; ++ j) p[++ np] = q[j];

}for (int j = 1; j <= m; ++ j)

for (int i = head[x]; i; i = e[i].next)

}inline long double calc(int k)

int main()

for (int i = 1; i < n; ++ i)

solve(1);

int k3 = n / 3, k2, k1;

if (n % 3 == 0) k2 = k1 = k3;

if (n % 3 == 1) k2 = k3, k1 = k2 + 1;

if (n % 3 == 2) k2 = k3 + 1, k1 = k2;

printf("%.2lf\n%.2lf\n%.2lf\n", calc(k1), calc(k2), calc(k3));

return 0;

}

2011 10 29模擬 24點遊戲題解

題目描述 24點遊戲是乙個非常有意思的遊戲,很流行,玩法很簡單 給你4張牌,每張牌上有數字 其中a代表1,j代表11,q代表12,k代表13 你可以利用數學中的加 減 乘 除以及括號想辦法得到24,例如 a k j q等價於 1 13 11 12 24 加減乘不用多說了,但除法必須滿足能整除才能除!...

題解 襲擊(平面最近點對)

題目描述 在與聯盟的戰鬥中屢戰屢敗後,帝國撤退到了最後乙個據點。依靠其強大的防禦系統,帝國擊退了聯盟的六波猛烈進攻。經過幾天的苦思冥想,聯盟將軍亞瑟終於注意到帝國防禦系統唯一的弱點就是能源 該系統由n個核電站 能源,其中任何乙個被摧毀都會使防禦系統失效。將軍派出了n個 進入據點之中,打算對能源站展開...

BZOJ4675 點對遊戲

傳送門 考慮每一對幸運點對的貢獻,假設有 v vv 對 一共可以選擇 x xx 個點,總共 n nn 個點 那麼答案就是 v a n 2x 2x x 1 anx v x x 1 n n 1 v times frac x x 1 frac v anx an 2 x 2 x x 1 n n 1 v x ...