Codeforces Round #618 E
题意:
给你一个n的数组,你可以进行无数次,选择区间使得区间内的值相加,然后区间的所有的值变成平均值。
使得最后数组的字典序最小
思路:
最后的数组一定是单调递增的,只要它比之前的平均值数大,就不会操作,如果比他小,需要进行操作到符合它的范围
用单调递减栈进行操作
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define inf 0x3f3f3f3f
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 1000000007
const int maxn=1e6+;
int n,m,t;
double a[maxn],ans[maxn];
int l[maxn],len[maxn];
int main(){
scanf("%d",&n);
for(it i=;i<=n;i++){
scanf("%lf",&a[i]);len[i]=;
}
it top=;l[]=;
for(it i=;i<=n;i++){
double now=a[i],sum=a[i];
while(top>= && a[l[top]]>now){
len[i]+=len[l[top]];
sum+=a[l[top]]*len[l[top]];
now=sum/len[i];
top--;
}
a[i]=sum/len[i];
l[++top]=i;
}
it l1=;
while(top>=){
for(it i=;i<=len[l[top]];i++){
ans[++l1]=a[l[top]];
}top--;
}
for(it i=l1;i;i--){
printf("%.10lf\n",ans[i]);
}
return ;
}
补一道,单调栈
题意:
求数组n,连续的k,从头到n-k,其中每一段中最大的数字是什么
样例
5 3
1 5 3 4 2
输出
5
5
4
思路
从前到后,存进去比sta.top大的值,和已经存进去并且在区间内的值
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define il inline
#define it register int
#define inf 0x3f3f3f3f
#define lowbit(x) (x)&(-x)
#define mem(a,b) memset(a,b,sizeof(a))
#define mod 998244353
const int maxn=2e6+;
int n,k;
int a[maxn],sta[maxn],ans[maxn],pos[maxn];
int main() {
scanf("%d%d",&n,&k);
for(it i=;i<n;i++){
scanf("%d",&a[i]);
}
int top=,t=;sta[top]=a[];pos[top]=;
for(it i=;i<k-;i++){
while(top>= && (a[i]>sta[top] || i-k>=pos[top])){
top--;
}
sta[++top]=a[i];pos[top]=i;
}
for(it i=k-;i<n;i++){
while(top>= && (a[i]>sta[top] || i-k>=pos[top])){
top--;
}
sta[++top]=a[i];pos[top]=i;
it c=;while(i-k>=pos[c]){c++;}
printf("%d\n",sta[c]);
}
return ;
}
Codeforces Round #618 E的更多相关文章
- Codeforces Round #618 (Div. 2)
题库链接 https://codeforces.ml/contest/1300 A. Non-zero 一个数组,每次操作可以给某个数加1,让这个数组的积和和不为0的最小操作数 显然如果有0的话,必须 ...
- Codeforces Round #618 (Div. 1)C(贪心)
把所有数看作N块,后面的块比前面的块小的话就合并,这个过程可能会有很多次,因为后面合并后会把前面的块均摊地更小,可能会影响更前面地块,像是多米诺骨牌效应,从后向前推 #define HAVE_STRU ...
- Codeforces Round #618 (Div. 1)B(几何,观察规律)
观察猜测这个图形是中心对称图形是则YES,否则NO #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace ...
- Codeforces Round #618 (Div. 1)A(观察规律)
实际上函数值为x&(-y) 答案仅和第一个数字放谁有关 #define HAVE_STRUCT_TIMESPEC #include <bits/stdc++.h> using na ...
- Codeforces Round #618 (Div. 2)A. Non-zero
Guy-Manuel and Thomas have an array aa of nn integers [a1,a2,…,an ]. In one step they can add 11 to ...
- Codeforces Round #618 (Div. 2)C. Anu Has a Function
Anu has created her own function ff : f(x,y)=(x|y)−y where || denotes the bitwise OR operation. For ...
- Codeforces Round #618 (Div. 2) 小号上紫之路
这一场涨了不少,题也比较偏思维,正好适合我 A. Non-zero 我们记录这些数字的总和sum,并且记录0的个数zero,显然答案应该是这些0的个数,注意如果sum+zero==0的话答案要额外加一 ...
- [CF百场计划]#2 Codeforces Round #618 (Div. 2)
A. Non-zero Description: Guy-Manuel and Thomas have an array \(a\) of \(n\) integers [\(a_1, a_2, \d ...
- Codeforces Round #618 (Div. 2)-B. Assigning to Classes
Reminder: the median of the array [a1,a2,-,a2k+1] of odd number of elements is defined as follows: l ...
随机推荐
- vue mvvm原理与简单实现 -- 上篇
Object.defineProperty介绍-- let obj = {}; Object.defineProperty(obj,'school',{ configurable : true, // ...
- 1.4 面试问题整理: ATM机取款
流程图:
- k8s集群应用例如jenkins启动问题排查思路
k8s集群应用例如jenkins启动问题排查思路 待办 rancher上的事件报告>pods日志>pods内容器日志(现获取容器id再查看容器日志,获取容器id 使用的是相应问题pod的名 ...
- lua 随机数 math.random()和math.randomseed()用法
用法一: 不给范围,就随机算一个0~1之间的小数: 用法二:给一个参数,就取1~n之间的随机数 用法三:给两个参数,就取m~n之间的随机数 math.randomseed()用法: 由于C中 ...
- vue-cli的版本查看及vue2.x和vue3.0的区别
链接:https://www.cnblogs.com/wyongz/p/11505048.html 链接2:https://blog.csdn.net/weixin_37745913/article/ ...
- [lua]紫猫lua教程-命令宝典-L1-03-01. 闭包
L1[闭包]01. 函数的传递赋值 没什么说的 1.函数作为变量来看 可以轻松的声明 相互赋值 2.函数变量本质是 一个内存指针 所以函数变量的相互赋值不是传递的函数本身 而是指向这个函数的内存地址 ...
- Android开发实战——记账本(2)
开发日志(2)——Bean目录以及数据库 首先编写一些自己生成的数据进行测试,看一下能否显示在模拟器上.那前提就是先写出bean目录,这和之前学的Javaweb步骤差不多.bean目录有三个变量事件. ...
- 素问 - IC跨期套利
摘自<小韭的学习圈> Q 我现在是长持ic.我观察到IC1907和IC1909的贴水差会有波动.有时候,IC 1907涨的多,有时候IC1909涨的多.而在某一天这个趋势相对是稳定的. 那 ...
- ios 下 select和option 无法隐藏指定元素
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- codeforces Make The Fence Great Again(dp)
题目链接:http://codeforces.com/contest/1221/problem/D 题目要求ai ! = ai-1,草纸上推理一下可以发现每一个栅栏可以升高的高度无非就是 +0,+1, ...