uva 10125 二分
https://vjudge.net/problem/UVA-10125
和之前做过的一道a+b+c=X的问题类似,不过这个要求多了a+b+c=d-->a+b=d-c 且abcd互不相等
我们可以处理出所有的a+b的组合并记录a,b,可以保存在结构体内。
接着对x排序,倒序枚举d,对每一个d遍历除d以外的其他数当做c,对(d-c)的值在排序后的结构体数组中二分找到第一个等于这个值得位置,
接着往后遍历所有值等于(d-c)的位置,并判定a,b,c,d是否互不相等,如果是输出这个数后退出。
#include<bits/stdc++.h>
using namespace std;
struct node
{
int a,b,s;
bool operator<(const node& tmp)const{
return s<tmp.s;
}
}P[];
int x[];
bool can(int c,int d,int n)
{
int l=,r=n-,mid;
while(l<r){
mid=l+((r-l)>>);
if(P[mid].s==x[d]-x[c]){
r=mid;
}
else if(P[mid].s>x[d]-x[c]){
r=mid-;
}
else l=mid+;
}
while(l<n&&P[l].s==x[d]-x[c]){
if(P[l].a!=c&&P[l].b!=d&&P[l].a!=d&&P[l].b!=c) return ;
l++;
}
return ;
}
int main()
{
int a,b,c,d,n,i,j;
while(cin>>n&&n){int p=;
for(i=;i<=n;++i)
{
scanf("%d",&x[i]);
for(j=;j<i;++j)
{
P[p].a=i;
P[p].b=j;
P[p++].s=x[i]+x[j];
}
}
sort(P,P+p);
sort(x+,x++n);
bool ok=;
for(int d=n;d>=;d--)
{
for(int c=n;c>=;c--)
{
if(c==d) continue;
if(can(c,d,p)) {ok=;cout<<x[d]<<endl;break;}
}
if(ok) break;
}
if(!ok) puts("no solution");
}
return ;
}
uva 10125 二分的更多相关文章
- UVA 10125 - Sumsets(POJ 2549) hash
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- UVa 1607 (二分) Gates
这道题真的有点“神”啊.= ̄ω ̄= 因为输入都是x,所以整个电路的功能一共就四种:0, 1, x,!x 所以就确定了这样一个事实:如果电路的输出是常数,那么所有的输入都可以优化成常数. 否则,只需要将 ...
- UVa 714 (二分) Copying Books
首先通过二分来确定这种最大值最小的问题. 假设每个区间的和的最大值为x,那么只要判断的时候只要贪心即可. 也就是如果和不超过x就一直往区间里放数,否则就开辟一个新的区间,这样来判断是否k个区间容得下这 ...
- uva 12587 二分枚举
思路:维护一个森林,二分枚举最小的最大值. #include<set> #include<map> #include<cmath> #include<queu ...
- UVa 1475 (二分+半平面交) Jungle Outpost
题意: 有n个瞭望塔构成一个凸n边形,敌人会炸毁一些瞭望台,剩下的瞭望台构成新的凸包.在凸多边形内部选择一个点作为总部,使得敌人需要炸毁的瞭望塔最多才能使总部暴露出来.输出敌人需要炸毁的数目. 分析: ...
- UVa 10341 (二分求根) Solve It
很水的一道题,因为你发现这个函数是单调递减的,所以二分法求出函数的根即可. #include <cstdio> #include <cmath> //using namespa ...
- uva 10125 - Sumsets
题意: 输入n,然后输入n个数字,,要在这n个数字中找出a,b,c,d..满足a,b,c,d是不同元素,并且a + b + c = d...求出最大的d 直接暴力时间复杂度为O(n^4)..会超时.. ...
- 【HASH】【UVA 10125】 Sumset
传送门 Description 给定一个整数集合S,求一个最大的d,满足a+b+c=d,其中a,b,c,d∈S Input 多组数据,每组数据包括: 第一行一个整数n,代表元素个数 下面n行每行一个整 ...
- UVA - 10125 哈希
题意:求集合中最大的\(d\)使得\(a+b=d-c\) 学习一下哈希的姿势(原来所谓链地址法就是直接跑个图啊) 哈希真有趣,全靠xjb乱搞 就叫这套hash为xjb-fibonacci-lpy-ha ...
随机推荐
- java配置文件properties,yml,一般文件
JAVA编写配置文件的几种方式: JAVA配置文件,一般都放在resource目录下,无论是下面提到的properties.yml还是普通的txt等文件. 在打成jar包之后,只需要jar包程序就可运 ...
- Django HttpRequest对象详解
WSGIRequest对象 Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数.也就是我们经常看到 ...
- iMessenger 2.0.14.0801简述
有些梦,看似遥不可及.但并非不能实现,仅仅要你足够的强!!.人力有时而穷,所以我们可能还须要一些热心人的帮助.这个人可能就是你. 四年来,我们一直在努力,从未放弃. 在我们做好一件事之前.我们永远不知 ...
- mysql 关于join的总结
本文地址:http://www.cnblogs.com/qiaoyihang/p/6401280.html mysql不支持Full join,不过可以通过UNION 关键字来合并 LEFT JOIN ...
- Hbase 学习笔记3----操作以及维护
一,基本命令: 建表:create 'table','t1','t2' 也可以建表时加coulmn的属性如:create 'table',{NAME => 't1', BLOOMFI ...
- Linux主从同步监测和利用sendMail来发邮件
首先介绍下sendMail About SendEmailSendEmail is a lightweight, command line SMTP email client. If you have ...
- Django 分页器 缓存 信号 序列化
阅读目录 分页器 缓存 信号 序列化 Django分页器 (paginator) 导入 from django.core.paginator import Paginator, EmptyPage, ...
- Rest_framework-2
一 版本 二 解析器 三 序列化 四 请求数据验证 一 版本 作用:应用程序的更新迭代(丰富或添加功能),可以通过版本来实现. 1 .没用rest_framework之前,我们可以通过以下方式来获取 ...
- restful API(转自阮一峰)
RESTful API 设计指南 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不 ...
- linux 查看tomcat 日志
tomcat 重启: cd /opt/appserver/apache-tomcat-/bin ./shutdown.sh -ef|grep tomcat kill - ./startup.sh 查看 ...