题目献上(LYP君原创!)
1 币 (coin)
1.1 题目描述
有一排硬币堆,两个人轮流取硬币。每个选手随机取最左边或者最右边的一堆硬币。求先手期望取得的硬币数。
1.2 输入格式
本题有多组测试数据。
第一行一个数 T ,表示数据组数。
对于每组测试数据,第一行一个正整数 n ,表示有多少堆硬币。
第二行 n 个非负整数,依次表示每一堆硬币的个数。
1.3 输出格式
对于每组测试数据,输出一行一个数,表示先手期望取得的硬币数。保留 3 位小数。
1.4 样例输入
2
3
1 4 9
4
5 5 5 5
1.5 样例输出
9.500
10.000
1.6 样例解释
对于第一个测试数据:
先手第一次取 后手第一次取 先手第二次取 先手取得的石子数 出现的概率
1 4 9 10 0.25
1 9 4 5 0.25
9 1 4 13 0.25
9 4 1 10 0.25
所以先手期望取得的硬币数为:
10 × 0.25 + 5 × 0.25 + 13 × 0.25 + 10 × 0.25 = 9.5
对于第二个测试数据:
由于两个人都会取 2 堆石子,且每堆石子都是 5 个,所以无论怎么取答案都是 10 。
我能够想到的就是概率与每堆个数无关
然后用补集的思想解
但是因为我比较弱,所以没有推出正确并且优的状态和转移,然后记忆化的写法真心不熟,丑又WA
不废话了写正解
f[i][j]表示从连续的堆数为i的取此连续的堆中的第j堆的概率
假如f[i][j]是先手成功的概率,而g[i][j]是