J Average

题意:

  • 给出长为n,m的序列ai和bi,定义nm的矩阵wij=ai+bj,求一个大小>=xy的子矩阵的平均值最大。

思路:

  • 因为n的范围为1e5,直接n*m计算出wij就已经超时,所以考虑贡献。从wij的矩阵平均值公式可以推出平均值分别为a和b的最大平均值相加。
  • 所以答案就是分别对 a 和 b 对应的区间求平均值然后加起来,问题转化成了 : 找 a 的一个长度至少为 x 的平均值最大的子区间和 b 的一个长度至少为 y 的平均值最大的子区间
  • 二分答案 S 后, 令 a[i] 变成 a[i]-S, 则问题变成求是否有和 >0 的长度至少为 x 的子区间, 这个可以 O(n) 计算 时间复杂度 O(nlogW)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 4e5+10;
const double esp = 1e-10;double a[maxn], b[maxn], tmp[maxn];
bool check(double num[], double avg, int n, int k){for(int i = 1; i <= n; i++)tmp[i]=num[i]-avg;for(int i = 1; i <= n; i++)tmp[i]+=tmp[i-1];double mi = 1e5+10;for(int i=k; i <= n; i++){mi = min(mi,tmp[i-k]);if(tmp[i]-mi>=0)return true;}return false;
}
double solve(double num[], int n, int k){double l = -1e5, r = 1e5;while(l+esp <= r){double mid = (l+r)/2.0;if(check(num, mid, n, k))l = mid;else r = mid;}return l;
}int main(){int n, m, x, y;  cin>>n>>m>>x>>y;for(int i = 1; i <= n; i++)cin>>a[i];for(int i = 1; i <= m; i++)cin>>b[i];printf("%.7lf", solve(a,n,x)+solve(b,m,y));return 0;
}

【2021牛客暑期多校训练营4】Average (二分答案,区间/子数组最大平均值,)相关推荐

  1. 2021牛客暑期多校训练营4 Tree Xor (区间异或上一个数+区间求交)

    题解: 首先我们可以发现,只要确定了一个值,那么树上其他的值也可以确定下来了,但是显然,遍历一棵树的时间复杂度为O(n),如果枚举+暴力判断的话时间复杂度O(1e9∗n)O(1e9*n)O(1e9∗n ...

  2. 2021牛客暑期多校训练营9

    2021牛客暑期多校训练营9 题号 题目 知识点 A A Math Challenge B Best Subgraph C Cells D Divide-and-conquer on Tree E E ...

  3. 2021牛客暑期多校训练营5

    2021牛客暑期多校训练营5 题号 题目 知识点 A Away from College B Boxes 概率 C Cheating and Stealing D Double Strings 线性d ...

  4. 2021牛客暑期多校训练营4

    2021牛客暑期多校训练营4 题号 题目 知识点 A Course B Sample Game C LCS D Rebuild Tree E Tree Xor 思维+线段树 F Just a joke ...

  5. 2021牛客暑期多校训练营3

    2021牛客暑期多校训练营3 题号 题目 知识点 A Guess and lies B Black and white C Minimum grid 二分图匹配 D Count E Math 数论+打 ...

  6. 2021牛客暑期多校训练营2

    2021牛客暑期多校训练营2 题号 题目 知识点 A Arithmetic Progression B Cannon C Draw Grids D Er Ba Game E Gas Station F ...

  7. 2021牛客暑期多校训练营1

    2021牛客暑期多校训练营1 题号 题目 知识点 难度 A Alice and Bob 博弈论 B Ball Dropping 计算几何 签到 C Cut the Tree D Determine t ...

  8. 2021牛客暑期多校训练营2,签到题CDFKI

    2021牛客暑期多校训练营2 题号 标题 已通过代码 通过率 团队的状态 A Arithmetic Progression 点击查看 6/72 未通过 B Cannon 点击查看 34/104 未通过 ...

  9. 2021牛客暑期多校训练营1, 签到题DFBG

    2021牛客暑期多校训练营1 题号 标题 已通过代码 通过率 团队的状态 A Alice and Bob 点击查看 1365/5586 通过(博弈论-打表) B Ball Dropping 点击查看 ...

  10. 【训练题66:状压暴力 | 子集dp】Greater Integer, Better LCM | 2021牛客暑期多校训练营5

    题意 Greater Integer, Better LCM | 2021牛客暑期多校训练营5 给你 a,b,ca,b,ca,b,c ,你需要找到一对 x,yx,yx,y ,满足: lcm(a+x,b ...

最新文章

  1. 产品经理岗位将要消亡?后端PM表示别瞎焦虑了
  2. android studio debug设置,在Android Studio中使用Flutter进行调试时如何“设置值...”
  3. mysql批量更新,批量插入之replace语句/insert into... on duplicate key update语句
  4. 思科3550 IOS
  5. 信息学奥赛一本通(1209:分数求和)
  6. BootstrapTable入门Demo
  7. 修复共享服务器,【转】Exadata存储服务器的紧急修复(rescue)经验分享
  8. c语言 获取系统版本,[原创]C/C++ 实现获取Windows操作系统版本信息
  9. MyEclipse中Hibernate+C3P0连接池配置
  10. 计算机网络考试难吗,网络教育统考中的计算机考试难不难,
  11. log怎么用计算机求,手机计算器log怎么用
  12. 版权符号圈c的输入方法
  13. 单片机外围模块漫谈之四,USB总线基本概念
  14. Java连接打印机打印二维码
  15. python解一元二次方程复数_一元二次方程求解(包括复数各种情况)
  16. MicroByte蓝牙手柄初探
  17. 为什么要进行WHQL微软徽标认证?
  18. 计算机硬件和工作原理,课题计算机硬件和基本工作原理
  19. 养生常识 淘米水14个妙用一般人不知道
  20. wro4j和maven plugin在编译期间压缩静态资源

热门文章

  1. matlab 构建数据集实用 api
  2. 趣学 C 语言(八)—— 文件内部位置
  3. 机器学习基础(五十七)—— 监督学习、无监督学习
  4. latex 基本用法
  5. datepick二格式 化时间_同样是持久化,竟然有这么大的差别
  6. 超级备份还原v2.3.05_新手如何一键还原电脑系统(图文教程)
  7. python自动化办公-简直出神入化,教你用Python控制Excel实现自动化办公
  8. 为什么都建议学java而不是python-是不是Python比Java更容易学,更容易就业?
  9. python是什么类型的语言-编程语言分类及python所属类型
  10. 如何系统的自学python-应该怎样系统的学习Python标准库?