PAT顶级 1026 String of Colorful Beads (35 分)

第一道顶级,这个题目的模型是找一个最大的没有重复元素的区间,然后还有一个第二标尺那就是尽可能价值最大,这个不是很难,最重要是怎么找这个最大的区间要想明白,用的同向扫描的尺取法,这里我的思路就是先移动右边界,然后看右边界的是不是重复出现过了,分成这两种讨论,

#include <bits/stdc++.h>

#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;

const int maxn = 1e4 + 5;

int w[maxn], a[maxn], rec[maxn];

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> w[i];
    }
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    int l = 0, r = 0;
    rec[a[l]] = 1;
    int tmp_max = 1;
    int val = w[a[l]];
    int max_val = val;
    int ans_l = 0, ans_r = 0;
    while (r < n - 1) {
        r++;
        if (rec[a[r]]) {
            while (l < r) {
                val -= w[a[l]];
                rec[a[l]] = 0;
                l++;
                if (a[l - 1] == a[r]) break;
            }
            rec[a[r]] = 1;
            val += w[a[r]];
        } else {
            rec[a[r]] = 1;
            val += w[a[r]];
        }
        if (r - l + 1 > tmp_max) {
            tmp_max = r - l + 1;
            max_val = val;
            ans_l = l, ans_r = r;
        } else if (r - l + 1 == tmp_max && val > max_val) {
            max_val = val;
            ans_l = l, ans_r = r;
        }
    }
    cout << max_val << " " << ans_l << " " << ans_r;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python beads 是什么? Python beads 是一种可以用 Python 编程语言进行串珠编程的工具。它是一种教育编程工具,旨在帮助初学者学习 Python 编程语言。 Python beads 是一套由彩色珠子组成的编码系统,每种颜色的珠子代表不同的编程指令或操作。通过将这些珠子连接在一起,就可以编写出具有特定功能的程序。 Python beads 适用于儿童和初学者学习编程。它利用了有效的触觉学习方法,通过手动操作彩色珠子,激发学生的兴趣和创造力。学生可以通过组装不同颜色的珠子来创建不同的编程指令,从而编写出具有各种功能的程序。这种亲身参与的方式有助于培养学生的逻辑思维和问题解决能力。 Python beads 还提供了一个图形化的界面,可以显示珠子组成的编程代码。这个界面可以帮助学生更好地理解编程概念和程序的工作原理。通过可视化的方式,学生可以直观地看到他们编写的程序的执行过程,从而更好地理解编程的逻辑和执行顺序。 Python beads 还提供了一些教学资源和示例项目,帮助学生更好地掌握 Python 编程。学生可以通过跟随这些资源和项目,逐步学习 Python 编程语言的基本概念和技巧。这些资源和项目旨在培养学生的计算思维和创造力,同时提供有趣和互动的学习体验。 总而言之,Python beads 是一种具有教育性质的编程工具,通过彩色珠子的组装和触觉学习的方式,帮助学生学习 Python 编程语言。它提供了直观的可视化界面和丰富的教学资源,培养学生的逻辑思维和问题解决能力,同时提供有趣和互动的学习体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值