当前位置: 首页 > wzjs >正文

如何有效的推广网站威海市做网站的

如何有效的推广网站,威海市做网站的,公关公司一般收费标准,做seo排名好的网站目录 1. 题目2. 解释3. 思路4. 代码5. 总结 1. 题目 给定两个整数集合 a 和 b,定义 magic操作 为: 从其中一个集合取出一个元素,放入另一个集合。操作后,两个集合的平均值都必须严格大于操作前的平均值。 限制条件:…

目录

  • 1. 题目
  • 2. 解释
  • 3. 思路
  • 4. 代码
  • 5. 总结

1. 题目

给定两个整数集合 ab,定义 magic操作 为:

  • 从其中一个集合取出一个元素,放入另一个集合。
  • 操作后,两个集合的平均值都必须严格大于操作前的平均值

限制条件:

  1. 不能将任一集合取空(否则无法计算平均值)。
  2. 如果被移动的元素 x 在目标集合中已存在,则目标集合的平均值不变(因为集合元素不重复),但源集合的平均值可能改变(因为 x 被移除)。

问题: 最多可以进行多少次这样的 magic 操作?


2. 解释

  • Magic操作的条件:

    • 设从集合 A 移动元素 x 到集合 B,则必须满足:
      • A 的新平均值 > A 的旧平均值。
      • B 的新平均值 > B 的旧平均值。
    • 由于集合元素不重复,如果 x 已在 B 中存在,则 B 的平均值不变(因为 B 的元素不变),此时只需 A 的新平均值 > A 的旧平均值。
  • 关键观察:

    • 如果 avg(A) == avg(B),无法进行任何 magic 操作(因为移动后至少一个集合的平均值会减小)。
    • 如果 avg(A) > avg(B),只能从 A 移动 严格小于 avg(A) 且严格大于 avg(B) 的元素到 B,且 B 中不能已有该元素。

3. 思路

  1. 计算初始平均值:

    • 计算 avgA = sum(A) / |A|avgB = sum(B) / |B|
    • 如果 avgA == avgB,直接返回 0(无法操作)。
  2. 确定移动方向:

    • 假设 avgA > avgB,则只能从 A 移动元素到 B
    • 移动的元素 x 必须满足:
      • avgB < x < avgA(保证移动后 AB 的平均值都增大)。
      • x 不在 B 中(否则 B 的平均值不变,无法满足 B 的新平均值 > 旧平均值)。
  3. 贪心策略:

    • A 排序,从小到大检查可以移动的元素。
    • 每次移动后,更新 sumAsumB|A||B|avgAavgB
    • 重复直到无法移动为止。

4. 代码

public class Problem02_Magic0p {// 保证arr1和arr2均没有重复值哦,且一定有数字public static int maxOps(int[] arr1, int[] arr2) {double sum1 = 0;for (int i = 0; i < arr1.length; i++) {sum1 += (double) arr1[i];}double sum2 = 0;for (int i = 0; i < arr2.length; i++) {sum2 += (double) arr2[i];}if(avg(sum1, arr1.length) == avg(sum2, arr2.length)){return 0;}// 平均值不一样int[] arrMore = null;int[] arrLess = null;double sumMore = 0;double sumLess = 0;if(avg(sum1, arr1.length) > avg(sum2, arr2.length)){arrMore = arr1;sumMore = sum1;arrLess = arr2;sumLess = sum2;}else{arrMore = arr2;sumMore = sum2;arrLess = arr1;sumLess = sum1;}Arrays.sort(arrMore);HashSet<Integer> setLess = new HashSet<>();for(int num : arrLess){setLess.add(num);}int moreSize = arrMore.length;  // 平均值大的集合还剩几个数int lessSize = arrLess.length;  // 平均值小的集合还剩几个数int ops = 0;    // 移动次数for(int i = 0; i < arrMore.length; i++){double cur = (double) arrMore[i];if(cur < avg(sumMore, moreSize) && cur > avg(sumLess, lessSize) && !setLess.contains(arrMore[i])){sumMore -= cur;moreSize--;sumLess += cur;lessSize++;setLess.add(arrMore[i]);ops++;}}return ops;}public static double avg(double sum, int length){return sum / length;}public static int sum(int[] arr){int sum = 0;for(int i = 0; i < arr.length; i++){sum += arr[i];}return sum;}public static void main(String[] args) {int[] arr1 = {1, 2, 3};System.out.println(avg(sum(arr1), arr1.length));int[] arr2 = {4, 5, 6};System.out.println(avg(sum(arr2), arr2.length));System.out.println(maxOps(arr1, arr2));}
}

输出结果:

2.0
5.0
2

5. 总结

  • 核心逻辑:
    • 确保 avg(A) > avg(B),然后从 A 移动满足 avg(B) < x < avg(A) 且不在 B 中的元素。
    • 每次移动后更新 sumavg,继续检查能否移动更多元素。
  • 时间复杂度:
    • 排序 A 的时间为 O(n log n),遍历 A 的时间为 O(n),总体 O(n log n)
  • 适用场景:
    • 适用于两个集合平均值不相等且存在可移动元素的情况。
    • 如果 avg(A) == avg(B) 或没有满足条件的 x,则无法操作。

文章转载自:

http://8LhNwycD.xbhpm.cn
http://ntG8baiE.xbhpm.cn
http://5xY6Pxdh.xbhpm.cn
http://IMKG5eRh.xbhpm.cn
http://elKRDxXz.xbhpm.cn
http://aIg4N5Vb.xbhpm.cn
http://Ioig9wbU.xbhpm.cn
http://gF1DQB5j.xbhpm.cn
http://O5O97Zeo.xbhpm.cn
http://5MQITRVG.xbhpm.cn
http://tuHAq4JG.xbhpm.cn
http://OKRRUcw6.xbhpm.cn
http://W1JU1e4A.xbhpm.cn
http://fBC07i3R.xbhpm.cn
http://j5rE1IYt.xbhpm.cn
http://6idHLwex.xbhpm.cn
http://MLg9jGzW.xbhpm.cn
http://KHmGr0Lw.xbhpm.cn
http://4W7sJBtz.xbhpm.cn
http://gFf7tPKV.xbhpm.cn
http://nrw7wnHI.xbhpm.cn
http://a2cpMsKo.xbhpm.cn
http://fjPdBgb2.xbhpm.cn
http://J7OHX4s5.xbhpm.cn
http://8fFwCHj4.xbhpm.cn
http://mAQezqek.xbhpm.cn
http://rQ8XdNpB.xbhpm.cn
http://UGh4bKdR.xbhpm.cn
http://nbG1QZKZ.xbhpm.cn
http://hokotCyh.xbhpm.cn
http://www.dtcms.com/wzjs/711814.html

相关文章:

  • 摄影网站免费源码怎样查询网站的点击量
  • 浙江理工大学网站设计与建设我做夫人那些年网站登录
  • 安徽网新科技网站建设介绍怎么做有趣的短视频网站
  • 网站策划书的意义wordpress主机xampp
  • 哪家企业做网站好网络工程师报名
  • 川畅科技联系 网站设计爱互融网站开发合同
  • 连云港网站建设服务wordpress怎么做404页面
  • 惠州企业网站设计wordpress爱视频
  • 无锡模板网站建设找哪个好双八网站建设
  • 北京网站关键词排名手机网站要求
  • 网站布局策划的流程图自己做的网站 kindle
  • 如何建设一个电子商务网站网站内优化怎么做
  • 单位做网站费用怎么记账什么源码做有趣的网站
  • 网站内部优化建设潍坊企业网站
  • 中文网站开发长沙十大科技公司
  • 芜湖做网站找哪家好科技公司网页设计欣赏
  • 个人网站建设合同范本北京展览展示设计有限公司
  • 深圳网站建设公司排行久久建筑网是个什么样的网站
  • 图文网站模版手机版网站快照如何做
  • 视频网站中滑动列表怎么做流量对网站的作用
  • psd模板 转 网站wordpress 首页显示摘要
  • 写作网站哪个能得稿费互联网公司手机网站
  • 贵州毕节建设局网站官网无锡好的网站公司
  • 珠海模板网站建设公司怎么做门户网站设计
  • 专业营销型网站建设费用命令删除wordpress 缓存
  • flash里面如何做网站链接网站建设推广公司价格
  • 上海网站建设备案号wordpress手机管理
  • 网站背景更换小程序h5页面
  • 做电信宽带合适做网站吗wordpress 语言包
  • 定制一个高端网站9861云南网站建设