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 ...
随机推荐
- (转)VLC播放RTP打包发送的.264文件
VLC播放RTP打包发送的.264文件 1,要有一个发送RTP包的264文件的服务器; 具体代码如下: rtp.h #include <WinSock2.h> #pragma commen ...
- MySQL 数据备份,Pymysql模块(Day47)
阅读目录 一.IDE工具介绍 二.MySQL数据备份 三.Pymysql模块 一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https:/ ...
- MySQL的搜索引擎,统一字符编码 和忘记MySQL密码如何破解
忘记mysql密码 linux平台下,破解密码的两种方式 [root@egon ~]# rm -rf /var/lib/mysql/mysql #所有授权信息全部丢失!!! [root@egon ~] ...
- Powerdesiger使用技巧
1.问题:使用CDM在生成LDM文件时,每次都生成Name(LDM)1,Name(LDM)2这样 , 同时遇到一个莫名其妙的问题,就是LDM或者PDM生成到了整个工程外的目录下 疑问回答:是因为原有的 ...
- freemarker split字符串分割 遍历map
<#list "张三三,李思思,,王强,柳树,诸葛正我"?split(",") as name> "${name}" </ ...
- php内存管理机制、垃圾回收机制
一.内存管理机制 先看一段代码: <?php //内存管理机制 var_dump(memory_get_usage());//获取内存方法,加上true返回实际内存,不加则返回表现内存 $a = ...
- 微信小程序获取验证码倒计时
getVerificationCode: function() { var that = this; var currentTime = that.data.currentTime; that.set ...
- ros使用时的注意事项&技巧
1.rosrun package-name executable-name 比如 rosrun turtlesim turtlesim_node 2.一旦启动roscore后,便可以运行ROS程序了. ...
- application/x-www-form-urlencoded和multipart/form-data
我们在提交表单的时候,form表单参数中会有一个enctype的参数. EncType表明提交数据的格式,用 Enctype 属性指定将数据发到服务器时浏览器使用的编码类型. enctype指定了H ...
- 手机调取摄像头问题(getUserMedia)
先说坏消息,苹果机没法玩这个!!! 而且,必须拥有 https 的安全协议!!! 而安卓机想完成这个功能倒是很 easy 的,看一眼代码 主要传入三个参数,配置对象,成功,失败 var mediaOp ...