给定一个序列,要求相邻两个数至少选一个,求选出数的最大平均数和最大中位数

\(\text{sol}\):二分答案。

二分平均数\(\text{mid}\),将每个元素减去\(\text{mid}\),\(\text{DP}\)一遍求能选的最大总和,大于等于\(\text{0}\)即\(true\)

二分中位数\(\text{mid}\),小于\(\text{mid}\)的值记为\(-1\),大于等于\(\text{mid}\)的值记为\(1\),求选出最大总和,大于\(0\)即\(true\)(由于这里中位数取\(\lceil \frac{n}{2} \rceil\))

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
#define MAXN (int)(1e5+233)
#define MAXA (long long)(1e9+233)
int a[MAXN];
long long c[MAXN],b[MAXN];
int n;
long long maxn=0;
inline long long maxw(long long A,long long B) { return A>B?A:B; }
long long f[MAXN]; inline bool check_average(long long x)
{
for (int i=1;i<=n;i++) b[i]=c[i]-x;
// if (x==43333) for (int i=1;i<=n;i++) printf("%lld ",b[i]); puts("");
f[1]=b[1]; f[2]=maxw(b[2],b[1]+b[2]);
for (int i=3;i<=n;i++) f[i]=maxw(f[i-2],f[i-1])+b[i];
// if (x==43333) for (int i=1;i<=n;i++) printf("%lld ",f[i]); puts("");
return f[n-1]>=0||f[n]>=0;
}
inline double bina_average()
{
long long l=1,r=maxn*100000,mid;
while (l<r)
{
mid=((l+r+1)>>1);
if (check_average(mid)) l=mid;
else r=mid-1;
}
return ((double)(l))/100000.0000;
} inline bool check_median(int x)
{
f[1]=(int)(a[1]>=x?1:-1); f[2]=(int)(a[2]>=x?1:-1); if (f[1]==1) f[2]++;
for (int i=3;i<=n;i++)
f[i]=maxw(f[i-1],f[i-2])+(a[i]>=x?1:-1);
return f[n-1]>0||f[n]>0;
} inline int bina_median()
{
int l=1,r=maxn,mid;
while (l<r)
{
mid=((l+r+1)>>1);
if (check_median(mid)) l=mid;
else r=mid-1;
}
return l;
} int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
maxn=maxw(maxn,a[i]);
c[i]=a[i]*1ll*100000;
}
printf("%.5lf\n%d\n",bina_average(),bina_median());
return 0;
}

AtCoder Beginner Contest 236 E - Average and Median的更多相关文章

  1. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  2. AtCoder Beginner Contest 169 题解

    AtCoder Beginner Contest 169 题解 这场比赛比较简单,证明我没有咕咕咕的时候到了! A - Multiplication 1 没什么好说的,直接读入两个数输出乘积就好了. ...

  3. AtCoder Beginner Contest 100 2018/06/16

    A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...

  4. AtCoder Beginner Contest 052

    没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...

  5. AtCoder Beginner Contest 053 ABCD题

    A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...

  6. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  7. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  8. AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】

    AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...

  9. AtCoder Beginner Contest 064 D - Insertion

    AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...

  10. AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】

    AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...

随机推荐

  1. Android studio的使用2

    运行按钮First activity: package com.example.activity;import androidx.appcompat.app.AppCompatActivity;imp ...

  2. Shell写脚本关于ssh执行jar包,需要刷新JDK路径的问题

    比如脚本中下面这一段 ssh $i "java -jar /applog/$PROJECT/$APPNAME --server.port=$SERVER_PORT >/dev/null ...

  3. mybatis插入批量数据

    1 for循环重复调用dao,消耗大   2 sql语句编写插入多条,只用于少数   3 mybatis的batch插入   @Test public void testInsertBatch2() ...

  4. vs 2015 默认管理员启动

    方法一: 找到 VS快捷方式 所在位置,并对其高级属性中的"用管理员身份运行"进行勾选,然后进行确定. 此方法 如果是通过sln文件的快捷方式打开的,不是管理员 方法二: 1.打开 ...

  5. 纯前端实现后端给数据进行文件导出——angular里面的使用

    interface dataList { cmd_cnt: number; risk_name: string; user_cnt: number; risk_type:string; } listO ...

  6. PHP中获取时间的下一周下个月的方法

    PHP中获取时间的下一周,下个月等通常用于定制服务的时候使用,比如包月会员,包年等等 //通常用于定制服务的时候使用,比如包月会员,包年等等 //获取当前时间过一个月的时间,以DATETIME格式显示 ...

  7. CentOS 7(Linux)安装docker,执行yum install docker-io -y报错

    CentOS 7(Linux)安装Docker,执行yum install docker-io -y报错 一.执行yum install docker-io -y报错 Error: docker-ce ...

  8. rust-must-know-crates-5ad8 100DayOfRust

    https://dev.to/cad97/rust-must-know-crates-5ad8 https://dev.to/search?q=100DayOfRust https://fastert ...

  9. Delphi中IdHttp调用接口,返回值乱码

    --------开发环境是Delphi XE10-------- 这里要说的是BUG问题, var respStream : TStringStream; respStream.DataString有 ...

  10. SQLyog 13.1.1.0注册码证书秘钥

    注册信息: Name:(用户名随意) License Key: Professional: 8e053a86-cdd3-48ed-b5fe-94c51b3d343c Enterprise: a4668 ...