小红书4.23笔试第一题 数组增值 AC

一开始用队列存发现内存占用过多,后来折腾了几轮发现居然可以dp,因为每个数字增加的操作次数都是固定的
下面这样可以AC
```cpp
const 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;
}
```
全部评论
递归为什么只能过45啊
点赞 回复 分享
发布于 2023-04-23 18:05 广东
uu什么岗
点赞 回复 分享
发布于 2023-04-24 18:24 湖北
天翼云科技有限公司
校招火热招聘中
官网直投

相关推荐

对不起,原来不是大厂要求高,是我连进小厂都高攀了
河和静子:面试前:这厂也配让我进? 面试后:你厂也配挂我?
点赞 评论 收藏
分享
理智的马里奥不愿再收感谢信:这小米咱是非去不可了是吗?
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
鼠鼠1号:nb了,他怎么不说自己能联系阎罗王改生死簿,给学生减寿三年??
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务