首页 > 代码库 > 【HDOJ】2428 Stars
【HDOJ】2428 Stars
先排序后二分。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 7 #define MAXN 1005 8 9 typedef struct {10 int x, y;11 } node_st;12 13 node_st nodes[MAXN];14 int n;15 16 bool comp(node_st a, node_st b) {17 if (a.x == b.x)18 return a.y < b.y;19 else20 return a.x < b.x;21 }22 23 bool find(int x, int y) {24 int l=0, r=n-1, mid;25 26 while (l <= r) {27 mid = (l+r)>>1;28 if (nodes[mid].x==x && nodes[mid].y==y)29 return true;30 if (nodes[mid].x > x)31 r = mid - 1;32 else if (nodes[mid].x < x)33 l = mid + 1;34 else if (nodes[mid].y > y)35 r = mid - 1;36 else37 l = mid + 1;38 }39 return false;40 }41 42 int main() {43 int t, ans;44 int i, j;45 46 scanf("%d", &t);47 while (t--) {48 scanf("%d", &n);49 for (i=0; i<n; ++i)50 scanf("%d%d", &nodes[i].x, &nodes[i].y);51 sort(nodes, nodes+n, comp);52 for (ans=0,i=0; i<n; ++i) {53 for (j=i+1; j<n; ++j) {54 if ((nodes[i].x-nodes[j].x)==(nodes[i].y-nodes[j].y) && find(nodes[i].x, nodes[j].y) && find(nodes[j].x, nodes[i].y))55 ++ans;56 }57 }58 printf("%d\n", ans);59 }60 61 return 0;62 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。