51nod 1267 4個數和為0(二分)

2021-08-06 04:02:51 字數 486 閱讀 9913

先存好任意兩個數之和,然後排序,而二分查詢每個和的相反數是否存在即可。

#include

#include

using

namespace

std;

#define maxn 1005

int s[maxn],k;

struct nodea[maxn*maxn]; //儲存任意兩個數之和以及它們的編號

int cmp(node x,node y) //按照和從小到大的順序排序

int find(int x) //二分查詢 x 的相反數

else

if(a[x].sum+a[mid].sum>0)

r=mid-1;

else

l=mid+1;

} return0;}

int main()

51nod 1267 4個數和為0

思路 先n 2預處理出所有兩兩的組合,那麼就變成要找a b 0的問題了,那麼排序o n 去找就可以了 includeusing namespace std define ll long long const int maxn 1005 1005 struct node node maxn bool ...

51nod1267 4個數和為0

1267 4個數和為0 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給出n個整數,你來判斷一下是否能夠選出4個數,他們的和為0,可以則輸出 yes 否則輸出 no input 第1行,1個數n,n為陣列的長度 4 n 1000 第2 n 1行 a i 10 9...

51 nod 1267 4個數和為0

給出n個整數,你來判斷一下是否能夠選出4個數,他們的和為0,可以則輸出 yes 否則輸出 no input 第1行,1個數n,n為陣列的長度 4 n 1000 第2 n 1行 a i 10 9 a i 10 9 output 如果可以選出4個數,使得他們的和為0,則輸出 yes 否則輸出 no sa...