马蹄集 最大的平均值、字符串的解码

最大的平均值

难度:黄金

○时间限制:1秒

巴占用内存:128M

给一个数组,长度为n,找一个长度大于等于m的子区间,使这个区间的元素

的平均值最大。

格式

输入格式:第一行输入整数n和m,数据间用空格隔开;

接下来n行,每行输入一个整数a,。

输出格式:输出一个整数,表示平均值的最大值乘以1000再向下取整之

二曰不lh%+中

//
// Created by abner on 2023/3/19.
//
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const int N=1e5 + 10;
int n,m;
double a[N],sum[N],l,r;
int check(double mid){
    double minn = 0;
    for (int i=1;i <=n;i++)
        sum[i] = sum[i-1] + a[i] - mid;
    for(int i= m;i<=n;i++) {//假设第i个数是尾巴
        minn = min(minn, sum[i - m]);
        if (sum[i] >= minn)
            return 1;
    }
        return 0;
    }
    int main(){
        cin >>n >>m;
        for (int i = 1;i <=n;i++){
            cin >>a[i];
            r = max(r,a[i]);
        }
        while (r -l >=eps) {
            double mid = (l + r) / 2;
            if (check(mid))
                l = mid;
            else
                r = mid;
        }
            cout <<(int)(r*1000)<<endl;
            return 0;
        }

MT2044·字符串的解码

字符串的解码

难度:黄金

○时间限制:2秒

巴占用内存:256M

给你一个字符串,由[,],数字和大写字母组成,现要求对其解码。

字符串中形如

[Dx],表示D个连续的X,例如

[4cB]或

[2[2CB]都可以表示

一旦出现括号就会有数字,且为正整数,会有两组方括号相邻的情况,如

[4A]

[5B]

格式

输入格式:一行字符串

//
// Created by abner on 2023/3/19.
//
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+7;
string s;
int len;
void f(int u){
    if (u ==len || s[u]== ']')
    return;
    if(s[u]=='['){
        u++;
        int num =0;
        while(s[u]>='0' && s[u]<='9') {
            num = num * 10 + s[u] - '0';
            u++;
        }
            while (num--)
                f(u);
            int tmp = 1;
            while (tmp) {
                if (s[u] == '[')
                    tmp++;
                else if (s[u] == ']')
                    tmp--;
                u++;
            }
            f(u);
        }else{
            while (s[u]>='A' && s[u]<='Z'){
            cout <<s[u];
            u++;
        }
        f(u);
    }}
    int main(){
    cin >> s;
    len = s.length();
    f(0);
    return 0;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值