CF1904C的题解
(一)
不太好想。(我看了题解才会)
-
当
时,可以选两次相同的 和 。再将生成的数做差。 -
当
时,直接 枚举。 -
当
时,先枚举第一次的 和 ,再用lower_bound()
实现查找第二次选择的数。时间复杂度 。
注意:当
(二)
AC 代码。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,k,a[2010];
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&n,&k);
int ans=2e18;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]),ans=min(ans,a[i]);
sort(a+1,a+n+1);
if(k>2){
puts("0");
continue;
}
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
ans=min(ans,a[j]-a[i]);
if(k==2){
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++){
int s=a[j]-a[i];
int pos=lower_bound(a+1,a+n+1,s)-a;
if(pos>1)ans=min(ans,abs(a[pos-1]-s));
if(pos<=n)ans=min(ans,abs(a[pos]-s));
}
}
printf("%lld\n",ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探