6127:Largest Average
#include<bits/stdc++.h>
using namespace std;
int a[100001];
double ave[100001];
struct student{
int i;
double ave;
};
student stu[100001]; bool cmp(const student &s1,const student &s2){
if(s1.ave==s2.ave){
return s1.i<s2.i;
}else{
return s1.ave>s2.ave;
}
} int main(){
priority_queue<int,vector<int>,greater<int> > q;
int n;
while(cin>>n){
memset(stu,0,sizeof(student)*n);
memset(a,0,sizeof(a));
memset(ave,0,sizeof(ave));
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
}
double s=0;
for(int i=n-1;i>0;i--){
if(i!=n-1){
if(a[i]<q.top()){ //如果这个数比队列中最小的值还小,算平均值的时候先没放进队列
int ss=q.size();
ave[i]=s*1.0/ss;
stu[i].ave=ave[i];
stu[i].i=i;
q.push(a[i]); //最后再放进队列
}else{ //如果这个数比队列中最小的值大
q.push(a[i]); //把这个数放进队列
int x=q.top();
q.pop(); //把队列中最小的值弹出
int ss=q.size();
ave[i]=(s+a[i]-x)*1.0/ss; //算出平均值
stu[i].ave=ave[i];
stu[i].i=i;
q.push(x); //最后把最小的值压回去队列
}
}else{
q.push(a[i]);
ave[i]=a[i];
stu[i].ave=ave[i];
stu[i].i=i;
}
s+=a[i];
//printf("%d %.2f\n",stu[i].i,stu[i].ave);
}
sort(stu,stu+n,cmp);
cout<<stu[0].i;
for(int i=1;i<n;++i){
if(stu[i].ave==stu[0].ave&&stu[i].i<=n-2){
cout<<" "<<stu[i].i;
}else{
break;
}
}
while(!q.empty()){
q.pop();
}
cout<<endl;
}
}
6127:Largest Average的更多相关文章
- LeetCode之“排序”:Largest Number
题目链接 题目要求: Given a list of non negative integers, arrange them such that they form the largest numbe ...
- Leetcode:Largest Number详细题解
题目 Given a list of non negative integers, arrange them such that they form the largest number. For e ...
- LeetCode第[84]题(Java):Largest Rectangle in Histogram(最大的矩形柱状图)
题目:最大的矩形柱状图 难度:hard 题目内容: Given n non-negative integers representing the histogram's bar height wher ...
- LeetCode OJ:Largest Number(最大数字)
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- HDU 5461:Largest Point
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) To ...
- HDU1506: Largest Rectangle in a Histogram(最大子矩阵,好题动态优化左右边界)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1506 刚开始没考虑时间复杂度,直接敲了,直接tle了,之后没有思路,然后看题解,看见大神写的优化非常棒. ...
- POJ2559:Largest Rectangle in a Histogram
浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:http://poj.org/problem?id=2559 贪心的想,最大的子矩阵顶部 ...
- AtCoder Grand Contest 009 E:Eternal Average
题目传送门:https://agc009.contest.atcoder.jp/tasks/agc009_e 题目翻译 纸上写了\(N\)个\(1\)和\(M\)个\(0\),你每次可以选择\(k\) ...
- AGC009:Eternal Average
传送门 好神啊 直接考虑一棵 \(n+m\) 个叶子的 \(k\) 叉树,根结点权值为 \(\sum_{i\in m}(\frac{1}{k})^{deep_i}\) 对于一个 \(deep\) 的序 ...
随机推荐
- Oracle 模糊查询 优化
模糊查询是数据库查询中经常用到的,一般常用的格式如下: (1)字段 like '%关键字%' 字段包含"关键字"的记录 即使在目标字段建立索引也不会走索引,速度最慢 (2 ...
- Java 8 之前的时间处理
最近在自己瞎折腾,有一个需求是计算当前日期到指定日期有多少天,用于实现纪念日或倒计时的功能.查阅资料后发现Java 8之前的时间日期处理很是麻烦而且被频频吐槽,以至于后来在 Java 8 中推出了一个 ...
- WPF APP 启动时增加特殊逻辑
public partial class App : Application { public App() { this.Startup += (o1, e1)=>{ string comman ...
- 【MyBatis】MyBatis 入门
MyBatis 入门 文章源码 软件框架 软件框架伴随着软件工程的发展而出现,所谓的软件框架,是提取了特定领域的软件的共性部分所形成的软件体系,它并不是一个成熟的软件,更像是一个半成品.开发者在框架之 ...
- 【Flutter】容器类组件之Container容器
前言 Container是一个组合类容器,它本身不对应具体的RenderObject,它是DecoratedBox.ConstrainedBox.Transform.Padding.Align等组件组 ...
- 【Flutter】容器类组件之填充
前言 Padding可以给其子节点添加填充(留白). 接口描述 class EdgeInsets extends EdgeInsetsGeometry { // 分别指定四个方向的填充 const E ...
- Vue基础语法与指令
项目初始化 用vscode打开终端,输入npm init -y生成package.json 然后安装vue npm install vue 需要注意的是,我遇到了这个问题 出现原因:文件夹名和生成的p ...
- CAN总线采样点测试
采样点是什么? 采样点是接受节点判断信号逻辑的位置,CAN通讯属于异步通讯.需要通过不断的重新同步才能保证收发节点的采样准确. 若采样点太靠前,则因为线缆原因,DUT外发报文尚未稳定,容易发生采样错误 ...
- LeetCode454. 四数相加 II
题目 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0. 分析 关键是如何想到用 ...
- Pandas应用案例-股票分析:使用tushare包获取股票的历史行情数据进行数据分析
目标: 使用tushare包获取股票的历史行情数据 输出该股票所有收盘比开盘上涨3%以上的日期 输出该股票所有开盘比前日收盘跌幅超过2%以上的日期 假如为我们从2010年1月1日开始,每月第一个交易日 ...