https://www.51nod.com/Challenge/Problem.html#problemId=1267

第一种方法:两个for+二分:很好理解,不用考虑重复的问题。但是这个还不够快

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e3+;
ll a[maxn];
int main()
{
ll n;
cin>>n;
for(int i=;i<n;i++)
{
cin>>a[i];
}
int ok=;
sort(a,a+n);
for(int i=;i<n;i++)
{
for(int j=i+;j<n;j++)
{
ll sum;
ll k=j+,m=n-; while(k<m)
{
sum=a[i]+a[j]+a[k]+a[m];
if(sum<)
{
k++;
}
else if(sum>)
{
m--;
}
else
{
ok=;break;
}
}
if(ok)
break;
}
if(ok)
break;
}
if(ok)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}

第二种,尺取法,复杂度为n,我们把所有两两相加存起来,再进行二分,但是二分时要加一个判断防止出现重复,这里结构体记录的是坐标与和

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 1e3+;
int a[maxn];
int n;
struct node
{
int x,y,s;
}st[maxn*maxn];
bool cmp(node a,node b)
{
return a.s<b.s;
}
int main()
{
int n;
cin>>n;
for(int i=;i<n;i++)
cin>>a[i];
int tot=;
for(int i=;i<n;i++)
{
for(int j=i+;j<n;j++)
{
st[tot].s=a[i]+a[j];
st[tot].x=i;
st[tot].y=j;
tot++;
}
}
sort(st,st+tot,cmp);
int l=,r=tot-;
int ok=;
while(l<r)
{
if(st[l].s+st[r].s==)
{
if(st[l].x!=st[r].x&&st[l].x!=st[r].y&&
st[l].y!=st[r].y&&st[l].y!=st[r].x)
{
ok=;break;
}
else
l++,r--;
}
else if(st[l].s+st[r].s>)
r--;
else
l++;
}
if(ok)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}

这个写了好几遍因为一直判我超时,上面的过了,但是我还有个跟它一样的代码(至少经检查是一样的)交了无数遍都不过,至今未解。

51node 4个数和0的更多相关文章

  1. HDU 1878(1Y) (判断欧拉回路是否存在 奇点个数为0 + 一个联通分量 *【模板】)

    欧拉回路 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  2. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0

    起因是我运行wordcount测试一直卡主,不能执行,一直处于 Accept 状态,等待被执行,刚开始是各种配置yarn参数,以及host配置,后来发现还是不行 hadoop 集群安装完成后,在500 ...

  3. 0..n去掉一个数,给你剩下的数,找出去掉的那个数

    转载请注明转自blog.csdn.net/souldak , 微博@evagle 首先,考虑没有去掉那些数,如果n是奇数,n+1个最低位肯定是0101...01,count(0)=count(1),如 ...

  4. hadoop 2.2.0 关于map和reduce的个数的设置

    关于hadoop中的map过程,我的理解是每一个map系统会开启一个JVM进程来处理,map之间相互并行,map函数内串行.这样的想法是否正确? 由于想在hadoop集群上算一个初始输入数据不多,但是 ...

  5. python计算1~2008中0和1的个数

    计算1~2008中所有自然数中1和0的个数总数. 通过自然数的大小划分区间,将自然数每位上的数载入列表,循环计数. list = [] onecount = 0 zerocount = 0 for i ...

  6. 【JAVA习题三十】求0—7所能组成的奇数个数

    package erase; public class 求0到7所能组成的奇数个数 { public static void main(String[] args) { /* * 求0—7所能组成的奇 ...

  7. Sort with Swap(0, i)

    原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/678 题目如下: Given any permutation of the number ...

  8. Java中长度为0的数组与null的区别

    有如下两个变量定义,这两种定义有什么区别呢? 1. int[] zero = new int[0]; 2. int[] nil = null; zero是一个长度为0的数组,我们称之为“空数组”,空数 ...

  9. lua判断表中数据是否连续,0可以代表任何数

    最近看到有lua面试题,挺有意思的,一张表中有若干个数,0可以代表任何数 比如有张表{9, 2, 4, 1, 3, 0, 0, 0, 0},按照规则这张表中的四个0可以用来代表5,6,7,8,那么这张 ...

随机推荐

  1. Spring事务原理分析-部分二

    Spring事务原理分析-部分二 说明:这是我在蚂蚁课堂学习了余老师Spring手写框架的课程的一些笔记,部分代码代码会用到余老师的课件代码.这不是广告,是我听了之后觉得很好. 课堂链接:Spring ...

  2. 车林通购车之家--购车计算器模块js实现

    //jsq-nav.twig <ul class="switch-nav db-tags bgfff clearfix"> <li id="qk&quo ...

  3. Python 矩阵相关

    Python 中矩阵运算主要使用numpy库.NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数索引的元素表格(通常是元素是数字).因此对于随机查找来说,比pyt ...

  4. 关于Burp Suite Intruder 的四种攻击方式

    以下面这一段参数为例,被§§包围的部分为需要破解的部分: user=§ss§&password=§zxcv§&imageField.x=17&imageField.y=1 (1 ...

  5. Hive的原生部署方式

    一.Hive的部署 1.官方文档 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 2.前提条件 需要安装JDK1.7之上 ...

  6. Typora: Markdown Reference (Typora下Markdown语法使用说明)

    引言 由于一直在使用Typora,这个是我使用过的最棒的Markdown编辑器,但是总是忽略某一个功能,于是决定认真看一下其帮助文档 这里做一个简单主要功能的中文翻译(按键对应Windows下). 标 ...

  7. firewalld学习-zone

    原文地址:http://www.excelib.com/article/290/show firewalld默认提供了九个zone配置文件: block.xml.dmz.xml.drop.xml.ex ...

  8. 冰蝎动态二进制加密WebShell特征分析

    概述 冰蝎一款新型加密网站管理客户端,在实际的渗透测试过程中有非常不错的效果,能绕过目前市场上的大部分WAF.探针设备.本文将通过在虚拟环境中使用冰蝎,通过wireshark抓取冰蝎通信流量,结合平时 ...

  9. python 聚类分析 k均值算法

    dataSet = [ #数据集 # 1 [0.697, 0.460], # 2 [0.774, 0.376], # 3 [0.634, 0.264], # 4 [0.608, 0.318], # 5 ...

  10. Java小项目之:教你做个聊天系统!

    Java小项目之:聊天系统 今天给大家带来的java练手小项目是一个简单的聊天室,界面简单,操作不难. 分为注册系统,登录系统和聊天系统三部分,很适合java小白练手. 完整的源码和素材请关注并私信我 ...