51nod 1451 合法三角形(暴力,思维)
2017-10-26 12:59
302 查看
先枚举了下相同x坐标和相同y坐标的情况,总情况减去后发现不对,少了个相同斜率的情况。那就枚举斜率,正好还包含了坐标相等的情况,反正数据范围小,暴力搞呗。用pair保存分数的最简形式。
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN = 2010; struct Point { int x,y; }ps[MAXN]; LL calc(LL num) { if(num < 3) return 0; return num*(num-1)*(num-2)/6; } int main() { int n; scanf("%d",&n); for(int i = 0; i < n; ++i) scanf("%d %d",&ps[i].x,&ps[i].y); if(n < 3) { puts("0"); return 0; } LL all = calc(n); int x,y,gd; map<pair<int,int>,int> mp; for(int i = 0; i < n; ++i) { mp.clear(); for(int j = i+1; j < n; ++j) { x = ps[i].x - ps[j].x; y = ps[i].y - ps[j].y; gd = __gcd(x,y); mp[make_pair(x/gd,y/gd)]++; } for(map<pair<int,int>, int>::iterator it = mp.begin(); it != mp.end(); ++it) { if(it->second > 1) all -= it->second*(it->second-1)/2; } } printf("%I64d\n",all); return 0; }
相关文章推荐
- 51nod 1451 合法三角形
- 51nod 1451 合法三角形
- 51nod-1451 合法三角形
- 51nod 1451:合法三角形 枚举斜率
- 51Nod-1451-合法三角形
- 51nod 1451 合法三角形 判斜率去重,时间复杂度O(n^2)
- 51Nod 1483 化学变换(思维+暴力)
- 51Nod-1179(思维、暴力)
- 1451 合法三角形
- 【51Nod】1315 - 合法整数集(思维)
- 51nod 1414 冰雕(思维+暴力)
- 51nod 1625 夹克爷发红包【思维+暴力+贪心】好题~
- 51nod 1414 冰雕【思维+暴力】
- 51nold 1451 合法三角形【数学几何】
- 51Nod - 1414 暴力
- 51Nod - 1548 枚举 + 暴力
- 51nod 1298:圆与三角形(计算几何)
- 51nod 1433 0和5 【思维题】
- CF#877 B. Nikita and string(思维,暴力)
- 51nod 1276 岛屿的数量(思维)