就是dp,但是仍然是o(n^2)的,咋办呢?前缀和,这样就O(n)了,轻松AC。 贴个代码给你吧,简单的不要不要的。 #include <iostream> using namespace std; #define pb push_back #define mp make_pair #define ll long long #define ull unsigned ll #define db double #define INF 0x3f3f3f3f #define MOD 1000000007 #define PII pair<int, int> db dp[100010]; db pfs[100010]; int main() { int n; cin >> n; dp[0] = 0.0f; dp[1] = 1.0f; dp[2] = 1.0f; pfs[0] = 0.0f; pfs[1] = 1.0f; pfs[2] = 2.0f; for (int i = 3; i <= n; i++) { dp[i] = 1.0 + 2.0 * pfs[i - 2] / (db)i; pfs[i] = pfs[i - 1] + dp[i]; } printf("%.10f\n", dp[n]); }
点赞 1

相关推荐

牛客网
牛客企业服务