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

南京企业网站排名优化seo短视频网页入口引流

南京企业网站排名优化,seo短视频网页入口引流,临桂建设局网站,国家和住房城乡建设部网站首页题目描述 小梦有 n 颗能量宝石,其中第 i 颗的能量为 ai​,但这些能量宝石十分不稳定,随时有可能发生崩坏,导致他们全部消失! 小梦想要留住宝石们,不希望他们发生崩坏,同时他发现:如…

题目描述

小梦有 n 颗能量宝石,其中第 i 颗的能量为 ai​,但这些能量宝石十分不稳定,随时有可能发生崩坏,导致他们全部消失!

小梦想要留住宝石们,不希望他们发生崩坏,同时他发现:如果这些宝石的能量的极差越大,则这些宝石们越不稳定,因此他希望最小化这些宝石的能量的极差(最大值减去最小值的差值)。

小梦有一招点石成金的技能,这个技能可以以如下方式改变一些宝石的能量:

∙ 要么小梦选择一块能量最小的宝石,将他变成一块当前能量最大的宝石。

∙ 要么小梦选择一块能量最大的宝石,将他变成一块当前能量最小的宝石。

形式化的即:

∙ 选择 i (1≤i≤n,ai​=min(a1​,a2​,...,an​)),执行:ai​:=max(a1​,a2​,...,an​)。

∙ 或选择 i (1≤i≤n,ai​=max(a1​,a2​,...,an​)),执行:ai​:=min(a1​,a2​,...,an​)。

小梦至多可以使用 k 次上述的 ”点石成金“ 技能,他想知道这些宝石的能量极差最小可以变为多少,请你帮他算一算吧。

输入格式

本题有多组测试数据。

输入的第一行包含一个正整数 T,表示数据组数。

接下来包含 T 组数据,每组数据的格式如下:

第一行两个正整数 n,k,分别表示小梦拥有的宝石数量 n ,和他最多可以释放 “点石成金” 技能的次数 k。

第二行 n 个正整数 ai​,表示每块宝石的能量。

输出格式

对于每组测试数据:

在单独的一行输出一个整数,表示宝石能量的极差最小值。

输入输出样例

输入 #1

2
8 3
1 2 3 4 5 6 7 8
4 3
100 1 100 2

输出 #1

4
0

说明/提示

【样例 1 解释】

使用 3 次操作一,选择 min 变为 max,操作完后数组变成:{8,8,8,4,5,6,7,8}。

此时数组的极差为 4 最小,可以证明不存在比 4 更优的答案。

【数据范围】

令 N 表示 T 组数据中 n 的总和。

对于 30% 的数据有:T=1,1≤k≤N≤20。

对于 60% 的数据有:1≤T≤10,1≤k≤N≤2000。

对于所有的测试数据有: 1≤T≤1000,1≤N≤5×105,0≤k≤n,0≤ai​≤109。

思路:

我们很容易想到,先将数组进行排序,然后分别用两个指针l,和r表示最左侧的最大值和最右侧的最小值。

 每次只要有将最小值变成最大值或者将最大值变成最小值的情况出现,那么我们就需要移动左或右指针到次小或次大值的位置上。

这样,我们假设当l指针在i位置,r指针在j位置时,找到答案,则操作次数为:(i-1)【操作左边要用的次数】+(n-j)【操作右边要用的次数】+min(i-1,n-j)【将左边的值变成最大值或将右边的值变为最小值后,额外再需要移动的次数 例:如果左边是1,右边是8,修改左边后,最后面的两个数应该是8,8因此如果此时要再操作右边,应该额外加上左边的操作次数,同理另一种情况也是如此,而这个值我们希望它尽可能小,这样可操作的次数就会变多】

而由题目规定,我们可知:(i-1)+(n-j)+min(i-1,n-j) <= k

因此当符合这一规定时,我们 则用ans记录它的差值,取最小值。

于是我们可以很轻松的想到双重循环遍历枚举,但是双重循环肯定过不了,然后我们发现:该数组中的数是单调递增的,且满足二分性,因此我们可以将第二重循环优化为二分,这样的时间复杂度是nlogn。

代码:

#include<bits/stdc++.h>using namespace std;
int t,n,k;
const int N = 5e5+10;
int q[N];int main(){cin>>t;while(t--){cin>>n>>k;for(int i =1;i<=n;i++){cin>>q[i];}sort(q+1,q+n+1);//先从小到大排序 int ans = INT_MAX;//初始化为极大值 for(int i = 1;i<=n;i++){if(i - 1 > k) break;int l = i,r = n;//在从i到n的区间里找到右边界 if(i - 1>k) break;//操作次数超过k了,直接跳出 while(l <= r){int mid = (l+r) / 2;if((i-1) + (n - mid) + min(i-1,n-mid) <= k) r = mid-1;else l = mid+1;}ans = min(ans,q[l]-q[i]);//每次更新取最小值 }cout<<ans<<endl;}return 0;
}

http://www.dtcms.com/wzjs/68045.html

相关文章:

  • 高端网站服务范围seo企业推广案例
  • 建设工程环境影响登记表网站办理b站网站推广mmm
  • 深圳网站制作需要多少钱百度快速排名技术培训教程
  • 地税网站如何做税种确认广州疫情防控措施
  • 山西运城给网站做系统的公司谷歌seo服务公司
  • 网站开发的业内人士企业模板建站
  • 网上做兼职网站有哪些工作网络营销方法有哪些?
  • 阿里巴巴网站被关闭了要怎么做推广网络公司
  • 武汉做便宜网站建设合肥seo报价
  • tag() wordpressseo优化推广技巧
  • 网站如何做攻击防护seo免费教程
  • 做个小网站多少钱性能优化工具
  • 怎么查有做网站的公司武汉 网络 推广
  • 专做品牌的网站搜索引擎论文3000字
  • 网站开发承诺函上海排名优化seobwyseo
  • java做网站与php做网站企业网站定制
  • 网站建设英语要几级成都达洱狐网络科技有限公司
  • 惠州定制网站制作推荐南京网站制作
  • 网站建设策划案怎么写个人网站制作教程
  • 怎么做自己下单的网站seo综合查询怎么用的
  • .cc后缀网站免费模式营销案例
  • 网站建设规划书毕业论文6000字郑州网络推广哪家口碑好
  • 北京建站公司做网站价格解封后中国死了多少人
  • 网站设计论文参考文献各大搜索引擎入口
  • 零食网站建设策划书如何优化培训体系
  • 北京市住房与城乡建设委员会网站电子商务网站设计方案
  • 自己网站做问卷调查seo外链建设方法
  • 给公司做网站诈骗常用的网络营销工具
  • 用muse做网站整站优化seo
  • 网站鉴赏2023网站推广入口