UVA10125 Sumsets 题解
题意简述
- 给一个集合
,找一个最大的数 满足 ,且 , , , 是集合 中不同的数。
解题思路
思路很简单,将
注意当枚举结束后若没有任何数符合要求,要输出 no solution。
总的时间复杂度应该是
代码实现
#include<bits/stdc++.h>
using namespace std;
const int N=1010,INF=0x3f3f3f3f;
int n,a[N],c,x,y,res;
unordered_map<int,pair<int,int> > mp;
int main() {
while(scanf("%d",&n),n) {
mp.clear();
res=-INF;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
mp[a[i]+a[j]]=make_pair(i,j);//记录下所有的a+b的值
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i!=j) {
c=a[i]-a[j];//计算出d-c
if(mp[c].first!=0) {
x=mp[c].first;
y=mp[c].second;
if(x==i || x==j || y==i || y==j) continue;
res=max(res,a[i]);//打擂台求出最大的d
}
}
if(res==-INF) printf("no solution\n");
else printf("%d\n",res);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现