最大的平均值
难度:黄金
○时间限制: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;
}