TB椰程 TypeBuddy 打字搭子

2023-12 · 6级 · 闯关游戏

GESP 标程 · 考级真题 · 代码 · cpp · 难度 5/5 · 共 1183 字

CCF 原卷官方标程 · 字符串、STL、位运算 · 本地编译通过

  • 2023-12
  • 字符串

正文

// GESP 2023-12 C++ 6级 编程题 1 · 闯关游戏
// 原题:https://oj.yecheng.tv/p/gs2312l6p1
// 官方原卷:https://gesp.ccf.org.cn/101/attach/1584918408724512.pdf
// 题意:你来到了一个闯关游戏。
// 知识点:字符串、STL、位运算
// 参考程序:CCF 原卷官方标程,PDF 抽取后已去行号;本地编译核验通过,供打字练习
// 原卷样例验证:样例验证 2/2 通过
//
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <string>
#include <map>
#include <iostream>
#include <cmath>
using namespace std;
const int N = 10005;
const int M = 105;
const int inf = 0x3f3f3f3f;
int a[M], b[N], f[N];
int main() {
    // freopen("data/1.in", "r", stdin);
    int n, m;
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= m; i ++)
        scanf("%d", &a[i]);
    for (int i = 0; i < n; i ++)
        scanf("%d", &b[i]);
    memset(f, -0x3f, sizeof(f));
    f[0] = 0;
    for (int i = 1; i < n; i ++)
        for (int j = 1; j <= m; j ++)
            if (i - a[j] >= 0)
                f[i] = max(f[i], f[i - a[j]] + b[i - a[j]]);
    int ans = -inf;
    for (int i = 0; i < n; i ++)
        for (int j = 1; j <= m; j ++)
            if (i + a[j] >= n) {
                ans = max(ans, f[i] + b[i]);
                break ;
            }
    cout << ans << endl;
    return 0;
}

GESP 标程 · 考级真题的其它内容

打字首页 · 英语学习中心 · 词库画廊 · 编程打字 · 指法入门 · 天梯榜 · 数据分析 · 班级课堂 · 关于我们
椰程 TypeBuddy 打字搭子 —— 键盘指法练习 · 单词记忆 · 班级课堂 · 在线 PK