51nod1267(双指针)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267
题意:中文题诶~
思路:双指针
求a+b+c+d=0,令a+b=e, c+d=f,即e+f=0;
所以可以先给所有数两两求和,并记录其下标,再根据和的大小排序。
再用双指针扫描即可。
代码:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#define MAXN 1010
using namespace std; int a[MAXN], pos=; struct node{
int x, y;
int value;
}gg[MAXN*MAXN]; bool cmp(node a, node b){
return a.value < b.value;
} int is_ok(int l, int r){
if(gg[l].value+gg[r].value==)
if(gg[l].x==gg[r].x||gg[l].y==gg[r].y||gg[l].x==gg[r].y||gg[l].y==gg[r].x) return ;
else return ;
else if(gg[l].value+gg[r].value>) return ;
else return ;
} bool solve(){
int l=, r=pos-;
while(l<=r){
int cnt=is_ok(l, r);
if(cnt==) return true;
else if(cnt==)
if(gg[l].value==gg[l+].value) l+=;
else if(gg[r].value==gg[r-].value) r-=;
else l+=, r-=;
else if(cnt==) r-=;
else l+=;
}
return false;
} int main(void){
int n;
cin >> n;
for(int i=; i<n; i++){
cin >> a[i];
for(int j=; j<i; j++){
gg[pos].x=j;
gg[pos].y=i;
gg[pos++].value=a[i]+a[j];
}
}
sort(gg, gg+pos, cmp);
int flag=solve();
if(flag) cout << "Yes" << endl;
else cout << "No" << endl;
return ;
}
51nod1267(双指针)的更多相关文章
- [51nod1267]4个数和为0(预处理+双指针)
题意:判断能否从序列中找出4个数的和为0. 解题关键:n^2预处理任意两个数的和,sort一下,双指针进行判定. 此解法尚存在一个问题,就是左右枚举的时候如果相同的有许多的时候该左边移动还是右边移动 ...
- [LeetCode] #167# Two Sum II : 数组/二分查找/双指针
一. 题目 1. Two Sum II Given an array of integers that is already sorted in ascending order, find two n ...
- [LeetCode] #1# Two Sum : 数组/哈希表/二分查找/双指针
一. 题目 1. Two SumTotal Accepted: 241484 Total Submissions: 1005339 Difficulty: Easy Given an array of ...
- Leetcode解题思想总结篇:双指针
Leetcode解题思想总结篇:双指针 1概念 双指针:快慢指针. 快指针在每一步走的步长要比慢指针一步走的步长要多.快指针通常的步速是慢指针的2倍. 在循环中的指针移动通常为: faster = f ...
- Longest Substring Without Repeating Characters - 哈希与双指针
题意很简单,就是寻找一个字符串中连续的最长包含不同字母的子串. 其实用最朴素的方法,从当前字符开始寻找,找到以当前字符开头的最长子串.这个方法猛一看是个n方的算法,但是要注意到由于字符数目的限制,其实 ...
- leetcode 15. 3Sum 双指针
题目链接 给n个数, 找出三个数相加结果为0的所有的组, 不可重复. 用双指针的思想,O(n^2)暴力的找, 注意判重复. class Solution { public: vector<vec ...
- hdu_5806_NanoApe Loves Sequence Ⅱ(双指针)
题目链接:hdu_5806_NanoApe Loves Sequence Ⅱ 题意: 给你一段数,问你有多少个区间满足第K大的数不小于m 题解: 直接双指针加一下区间就行 #include<cs ...
- BZOJ_2679_[Usaco2012 Open]Balanced Cow Subsets _meet in middle+双指针
BZOJ_2679_[Usaco2012 Open]Balanced Cow Subsets _meet in middle+双指针 Description Farmer John's owns N ...
- BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针
BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针 Description Farmer John's N cows (1 <= N <= 100,000) ...
随机推荐
- PHP基础函数、自定义函数以及数组
2.10 星期五 我们已经真正开始学习PHP 了,今天的主要内容是php基础函数.自定义函数以及数组, 内容有点碎,但是对于初学者来说比较重要,下面是对今天所讲内容的整理: 1 php的基本语法和 ...
- mysql学习之基础知识
一.什么是数据库 一般而言,数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,使用关系型数据库管理系统(RDB ...
- 理解c/c++指针和引用
1 指针的指针 比如int* a,那么a是指向一个int型的对象的.也就是说,*前面的类型是该指针指向的对象的类型. 同理int** a的话,a指向一个int*型的对象,也就是说,它指向的对象也是一个 ...
- go echo studygolang ___go_build_myT_go__1_.exe
https://github.com/studygolang/studygolang [stat]; 用户在线数据存到哪里:redis -> 表示存入 redis,这样支持多机部署; onlin ...
- Spring 实战 学习笔记(1)
Spring的核心 依赖注入 & 切面编程 1.创建应用组件之间协作的行为通常称为装配.(wiring) 2.Spring EL表达式.SEL是一种能在运行时构建复杂表达式,存取对象属性.对象 ...
- 7-5 打印选课学生名单(25 point(s)) 【排序】
7-5 打印选课学生名单(25 point(s)) 假设全校有最多40000名学生和最多2500门课程.现给出每个学生的选课清单,要求输出每门课的选课学生名单. 输入格式: 输入的第一行是两个正整数: ...
- 持续集成工具hudson【转载】
第一节 我的理解 项目中使用了hudson,那么hudson是处在怎样的一个地位呢? 首先就我自己的认知,项目中hudson的作用有一下几点: 1.获取svn服务器上的最新代码: 2.把最新代码编译打 ...
- 自动化测试框架selenium+java+TestNG——TestNG注解、执行、测试结果和测试报告
TestNG是java的一个测试框架,相比较于junit,功能更强大和完善,我是直接学习和使用的TestNG就来谈下TestNG的一些特点吧. TestNG的特点 注解 TestNG使用Java和面向 ...
- ffmpeg xcode 中的使用
最近比较闲,苦于ios设备上没有直接播放torrent 文件的软件,开始折腾了.找了不少资料有了思路.但是其中用到了ffmpeg 这个东西. ffmpeg 是通用的一个视频解决框架,用C语言编写,通用 ...
- 常见的LINUX发行版安装libiconv库方法
今天编译程序,发现程序报错,如下 cannot find -liconv collect2: ld returned 1 exit status 或者 undefined reference to ` ...