牛客568431428号 level
获赞
57
粉丝
8
关注
7
看过 TA
144
武汉大学
2024
C++
IP属地:广东
暂未填写个人简介
私信
关注
2023-05-31 22:14
武汉大学 C++
题是这样的:给一个数n(n>=1),再给一个数组[1,2,3,...,k]。问,用数组中的数,有多少种方法能让n变成0。从记忆化就能20%了,但是超内存,翻译成dp还是超内存(毕竟都O(nk))。之后写了个队列O(k)的方法,用例都对,一提交0%,麻了,不知道错哪了。```    if(n    {        std::cout    }    queue q;    q.push(1);    unsigned long long now_sum = 1;    for (unsigned long long hp = 1; hp     {        unsigned long long sum = now_sum % 998244353;        q.push(sum);        now_sum += sum;        now_sum = now_sum % 998244353; if (q.size() > k)        {            unsigned long long pop_num = q.front(); q.pop();            now_sum = now_sum - pop_num;        }    }    std::cout ```
投递阿里巴巴等公司10个岗位
0 点赞 评论 收藏
分享
2023-03-30 17:14
武汉大学 C++
托马斯。成:第一题: #include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; int a[N],w[N]; char v[N]; int f[N][N]; int main() { int n,m; cin >> n >> m; for(int i = 1 ; i <= n ; i++) { cin >> v[i] >> a[i]; if(v[i] == 'm') { cin >> w[i]; } } for(int i = 1 ; i <= n ; i++) { for(int j = 1 ; j <= m ; j++) { if(v[i] == 'm') f[i][0] = max(f[i - 1][0],f[i - 1][j] + w[i]); else f[i][j] = max(f[i-1][j],f[i - 1][0]); } } int res = 0; for(int i = 0 ; i <= m ; i++) { res = max(f[n][i],res); } cout << res << endl; return 0; }
投递拼多多集团-PDD等公司10个岗位
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务