一开始用队列存发现内存占用过多,后来折腾了几轮发现居然可以dp,因为每个数字增加的操作次数都是固定的下面这样可以AC```cppconst int MOD = 1e9 + 7;int main(){int n;cin >> n;vector<int> arr;int max = -1;while (n--){int a;cin >> a;arr.push_back(a);if (a > max)max = a;}// long long类型vector<long long> dp(max + 1, 0);vector<long long> mem(max + 1, 0);dp[0] = 1;dp[1] = 3;mem[1] = dp[0];for (int i = 2; i <= max; ++i){// 这里也要mod 不mod只能A36%dp[i] += (mem[i - 1] + i * dp[i - 1]) % MOD;mem[i] = dp[i];dp[i] += (i + 1) % MOD;}long long res = 0;for (auto i : arr)res = (res + dp[i]) % MOD;cout << res;}```