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个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...
随机推荐
- linux lcd设备驱动剖析三
上一节文章中详细地剖析了probe函数,但是从始至终都没有看到打开读写文件接口的操作函数,只看到了下面这个操作结构体 [cpp] view plain? static struct fb_ops s3 ...
- vs2017发布web项目
1.webform项目发布 1.右键选择项目. 2.选择自定义. 3.“配置文件名称”,发布后生成在项目中记录此次发布选择的配置信息文件名,下次发布默认为此次选择的配置信息,可以删除,随便填一个. 4 ...
- Window中的内存地址(小知识)
现在的编辑器大部分工作都是内存管理托管型,所以很少直接对Window的内存地址直接管理了. Window中的内存地址主要是以16进制数字体现的,当操作系统为32位时,那么每个内存地址为2的32次方,也 ...
- 【phonegap】用本地浏览器打开网页
<a id="ssl2" href="#" onclick="openLocalExplorer()">请点击跳到页面</ ...
- Python 中的 is 和 == 编码和解码
一 is 与 == 区别 == 比较 比较的是值 例如: a = 'alex' b = 'alex' print(a == b) #True a = 10 ...
- Apple Ad Hoc
Apple Ad Hoc 发布测试 App只能通过Ad Hoc分享给绑定我们账号的设备上,所以至是一百台 1.官网member Center创建Ad Hoc证书 2.在官网下载Ad Hoc证书到mac ...
- VMWARE 虚拟机新增硬盘,格式化分区,并挂载
VMWARE 虚拟机新增 硬盘 并挂载 一台虚拟机上安装ORACLE12c 需要分一块硬盘挂载数据文件 日志文件 以及归档文件 1. 关闭虚拟机 2. 编辑虚拟机设置 选择[编辑虚拟机设置]并打开,将 ...
- selenium3加载浏览器
浏览器禁用更新: 因为selenium对浏览器的支持是有限制的.当浏览器更新到最新版本时,需要下载支持最新版本的插件.有时候selenium还没有更新到支持最新版本的插件,但本地已经更新到最新版本了. ...
- css常见问题解决方法
设置方法: div内的img和span都需要设置vertical-align:middle; 解决inline-block的空格: http://www.w3cplus.com/css/fightin ...
- 面试题:jsp九大内置对象
我们常说的JSP有九大内置对象分别为:request.response.session.out.pagecontext.page.exception.application.config. 我们知道, ...