2025/03/16蚂蚁笔试第二题思路和代码

思路:动态规划,保证组成的最后字符串中不包含110,那么其实只需要记录当前已经组成的字符串最后的三种状态,分别是0,1,11

对于枚举的新字符如果为0,则可以由状态0->0 / 1->0, 但是如果前面的状态为11则不能转移,因为会组成110与题目要求不符

对于枚举的新字符如果为1,则可以由状态0->1 / 1->11 / 11->11 这三种状态转移

按照上述分析进行转移即可

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    int n;
    cin >> n;
    vector<ll> arr(n);
    for (int i = 0; i < n; i++) cin >> arr[i];
    vector<vector<ll>> f(n, vector<long long>(3, -1));
    string s;
    cin >> s;
    if (s[0] == '0') f[0][0] = arr[0];
    else if (s[0] == '1') f[0][1] = arr[0];
    for (int i = 1; i < n; i++) {
        for (int j = 0; j < 3; j++) f[i][j] = f[i - 1][j];
        if (s[i] == '0') {
            f[i][0] = max(f[i][0], arr[i]);
            if (f[i - 1][0] != -1 || f[i - 1][1] != -1) {
                f[i][0] = max(f[i][0], max(f[i - 1][0], f[i - 1][1]) + arr[i]);
            }
        } else {
            f[i][1] = max(f[i][1], arr[i]);
            if (f[i - 1][0] != -1) {
                f[i][1] = max(f[i - 1][0] + arr[i], f[i][1]);
            }
            if (f[i - 1][1] != -1 || f[i - 1][2] != -1) {
                f[i][2] = max(max(f[i - 1][1], f[i - 1][2]) + arr[i], f[i][2]);
            }
        }
    }
    ll ans = 0;
    for (int i = 0; i < 3; i++) ans = max(f[n - 1][i], ans);
    cout << ans << endl;
    return 0;
}

笔试能力提升宝典 文章被收录于专栏

本专栏专注于互联网大厂春招、秋招笔试编程真题的深度解析与实战演练,助你轻松攻克笔试难关。无论你是应届毕业生,还是准备跳槽的职场人,这里都有你需要的干货内容。我们精选了一线互联网企业的经典笔试题目,涵盖数据结构、算法、动态规划、字符串处理等高频考点,并提供详细的解题思路与代码实现。通过本专栏,你将掌握笔试核心技巧,提升编程实战能力,轻松应对大厂笔试挑战。快来加入我们,开启你的大厂求职之旅吧!

全部评论
需要自己處理輸入輸出嗎
点赞 回复 分享
发布于 03-19 18:08 江苏

相关推荐

07-11 11:10
门头沟学院 Java
请问各位大三兄弟们跟hr说多久实习时间到时候可以提前跑路吗?
程序员小白条:问就是六个月以上,可以一年,实习都这样,你入职后想跑就跑
点赞 评论 收藏
分享
程序员小白条:太晚了,看别人找到实习了才投的话,自己本身就没啥准备,计划太晚咯,只能吞苦果子
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:24
大家还是用ai改吧,我心疼得要死,就当花钱买教训吧,人家直接拿完钱就跑路了
程序员小白条:简历修改700....神奇,又不是帮你面试,咋的,简历修改从双非变92了还是没实习变成有大厂实习了
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务