51 nod 1267 4个数和为0
第1行,1个数N,N为数组的长度(4 <= N <= 1000)
第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
5
-1
1
-5
2
4
Yes
刚开始使用算出两个数的和然后保存在数组中,将4sum将为2sum,因为在算两个数的和的时候,可能存在重复的情况,所以用if语句判断了一下
#include<stdio.h>
#include<algorithm>
#include<string.h>
const int M = ; using namespace std; typedef pair<int, int> P; int main()
{
int n, Count, flage;
int i, j;
int b[M], a[M];
P p[M]; scanf("%d", &n); memset(a, , sizeof(a));
memset(b, , sizeof(b)); for( i = ; i < n; i++ )
{
scanf("%d", &a[i]);
} Count = ; for( i = ; i < n; i++ )
{
p[Count].first = a[i]; for( j = i+; j < n; j++)
{
p[Count].second = a[j];
b[Count++] = a[i] + a[j];
}
} for( i = ; i < Count; i++ )
{
for( j = ; j < Count; j++ )
{
if(p[i].first != p[j].first && p[i].second !=p[j].second && p[i].first != p[j].second && p[i].second != p[j].first)
{
flage = b[i] + b[j]; if(flage == )
{
printf("Yes\n"); return ;
}
} }
} printf("No\n"); return ;
}
结果提交的时候过了一半的数据,另外的一半被卡住了
Ac代码
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MAXN = + ; int n, num[MAXN]; int main(){
freopen("in.txt", "r", stdin); int flag, tmp;
while(scanf("%d", &n) != EOF){
for(int i=; i<n; ++i){
scanf("%d", &num[i]);
}
sort(num+, num+n);
flag = ;
for(int i=; i<n; ++i){
if(flag){ break; }
for(int j=i+; j<n; ++j){
if(flag){ break; }
int l = j+, r = n-;
while(l < r){
tmp = num[i] + num[j] + num[l] + num[r];
if(tmp == ){
flag = ;
break;
}else if(tmp > ){
r--;
}else{
l++;
}
}
}
}
if(flag){
printf("Yes\n");
}else{
printf("No\n");
}
}
return ;
}
51 nod 1267 4个数和为0的更多相关文章
- 51Nod 1267 4个数和为0 二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No".Input第1行,1个数N,N为数组的长度(4 <= ...
- [51nod] 1267 4个数和为0 暴力+二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No". Input 第1行,1个数N,N为数组的长度(4 < ...
- 51nod 1267 4个数和为0
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出&qu ...
- 51nod 1267 4个数和为0 思路:哈希map+避免重复的点
题目: 总结大佬们的思路: 思路1:所有数两两求和,存入map中,每次判断有没有相反数被标记过. 思路2:对所有数排序,排完所有数两两求和,结果正好是排好序的.然后扫一遍,二分查找看之前有没有相反数存 ...
- 51nod 1267:4个数和为0 哈希
1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出&qu ...
- 51 nod 1439 互质对(Moblus容斥)
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...
- 51 nod 1495 中国好区间
1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...
- 51 nod 1421 最大MOD值
1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...
- 51 nod 1681 公共祖先 (主席树+dfs序)
1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...
随机推荐
- win7重新安装后删除文件权限不够(小技巧)
选择文件,安全,编辑,如果用户权限可以编辑,那么赋予提示的用户权限. 如果此时用户不可编辑,那先把所属用户换了,安全,高级,所有者,更换所有者之后,权限就可以编辑了.
- IDA Pro 权威指南学习笔记(二) - IDA 数据库文件
生成数据库文件 把要分析的文件用 IDA 打开后,会生成 3 个数据库文件 扩展名分别为 .id0,id1,nam .id0 文件是一个二叉树形式的数据库 .id1 文件包含描述每个程序字节的标记 . ...
- openGL 变换06
变换 使用(多个)矩阵(Matrix) 对象可以更好的变换(Transform)一个物体. 向量 向量最基本的定义就是一个方向. 或者说 向量有一个方向(Direction)和大小(Magnitude ...
- jqurey datatable tableTools 自定义button元素 以及按钮定义事件
版本 1.10.4 "dom": 'T<"clear">lfrtip', "tableTools": { //"sSw ...
- HTTP直接请求webService
在实际开发中,会遇到各种各样的webService接口,并且对方提供的接口并不规范,一些客户端反而就不好使了,如cxf(客户端与动态调用)等,直接用java提供的api比较繁琐,这时直接用http r ...
- Java字节码
Java字节码 javap -c 反编译.class文件可得字节码 知乎讨论https://www.zhihu.com/question/27831730 栈和局部变量操作 将常量压入栈的指令 aco ...
- C#使用ADO操作Excel
1 说明 把excel当成一个数据库,类似于Access数据库来操作. 2 源代码 2.1 Model层 /// <summary> /// 人员信息 /// </summary&g ...
- ubuntu网速慢解决方法
ubuntu网速慢解决方法 (2011-04-02 09:58:21) 本人在Window7下装ubuntu10.10双系统,在window7下速度挺快的,到了ubuntu速度就慢了很 ...
- 【总结整理】AXURE原件
iphone:750*1334 一般用分辨率的一半 移动的时候,按住shift拖动,可水平移动 框选的时候,箭头选择包含模式,只要不全部包含进来,就不会被选中 ctrl+'=显示背景网格 ctrl+s ...
- selenium3加载浏览器
浏览器禁用更新: 因为selenium对浏览器的支持是有限制的.当浏览器更新到最新版本时,需要下载支持最新版本的插件.有时候selenium还没有更新到支持最新版本的插件,但本地已经更新到最新版本了. ...