题目链接 题解 二分答案+dp 如果我们知道答案,贪心地想,让每个人做尽量多的模块一定不会比最优解差 \(f[i][j]\)表示前\(i\)个人第一个模块做了\(j\)块,第二个模块最多能做多少 然后我们枚举第\(i\)个人做多少块第一个模块,就可以算出第二个模块最多能做多少 取最大值即可 Code #include<bits/stdc++.h> using namespace std; const int N = 110; int f[N][N]; int a[N], b[N], n, m;…
我们先考虑第i大数,比它大的数有(n-i)个,显然要使i是Local Maxima,比它大的数必须放在它后面,那么它是Local Maxima的期望是: 那么n个数中Local Maxima个数的期望就是,即为,这个就是调和级数. 为了避免超时,再用分段打表的特殊姿势即可 正式代码(略去一堆赋值) #include<cstdio> #include<algorithm> using namespace std; ; long long n,m; ],ans; int main(){…