JZOJ 3493. 【NOIP2013模拟联考13】三角形(triangle)

有一个显而易见的做法,枚举一个点,然后其它点到这个点的斜率都求出来,显然斜率相同的点不能成为另外两个点,随便算算就统计答案了

要卡常,可以开一堆头文件优化实现

 1 // luogu-judger-enable-o2
 2 %:pragma GCC optimize(3)
 3 %:pragma GCC optimize("Ofast")
 4 %:pragma GCC optimize("inline")
 5 %:pragma GCC optimize("-fgcse")
 6 %:pragma GCC optimize("-fgcse-lm")
 7 %:pragma GCC optimize("-fipa-sra")
 8 %:pragma GCC optimize("-ftree-pre")
 9 %:pragma GCC optimize("-ftree-vrp")
10 %:pragma GCC optimize("-fpeephole2")
11 %:pragma GCC optimize("-ffast-math")
12 %:pragma GCC optimize("-fsched-spec")
13 %:pragma GCC optimize("unroll-loops")
14 %:pragma GCC optimize("-falign-jumps")
15 %:pragma GCC optimize("-falign-loops")
16 %:pragma GCC optimize("-falign-labels")
17 %:pragma GCC optimize("-fdevirtualize")
18 %:pragma GCC optimize("-fcaller-saves")
19 %:pragma GCC optimize("-fcrossjumping")
20 %:pragma GCC optimize("-fthread-jumps")
21 %:pragma GCC optimize("-funroll-loops")
22 %:pragma GCC optimize("-fwhole-program")
23 %:pragma GCC optimize("-freorder-blocks")
24 %:pragma GCC optimize("-fschedule-insns")
25 %:pragma GCC optimize("inline-functions")
26 %:pragma GCC optimize("-ftree-tail-merge")
27 %:pragma GCC optimize("-fschedule-insns2")
28 %:pragma GCC optimize("-fstrict-aliasing")
29 %:pragma GCC optimize("-fstrict-overflow")
30 %:pragma GCC optimize("-falign-functions")
31 %:pragma GCC optimize("-fcse-skip-blocks")
32 %:pragma GCC optimize("-fcse-follow-jumps")
33 %:pragma GCC optimize("-fsched-interblock")
34 %:pragma GCC optimize("-fpartial-inlining")
35 %:pragma GCC optimize("no-stack-protector")
36 %:pragma GCC optimize("-freorder-functions")
37 %:pragma GCC optimize("-findirect-inlining")
38 %:pragma GCC optimize("-fhoist-adjacent-loads")
39 %:pragma GCC optimize("-frerun-cse-after-loop")
40 %:pragma GCC optimize("inline-small-functions")
41 %:pragma GCC optimize("-finline-small-functions")
42 %:pragma GCC optimize("-ftree-switch-conversion")
43 %:pragma GCC optimize("-foptimize-sibling-calls")
44 %:pragma GCC optimize("-fexpensive-optimizations")
45 %:pragma GCC optimize("-funsafe-loop-optimizations")
46 %:pragma GCC optimize("inline-functions-called-once")
47 %:pragma GCC optimize("-fdelete-null-pointer-checks")
48 #include <bits/stdc++.h>
49 using namespace std;
50 typedef long long ll;
51 const int N = 3010;
52 int x[N], y[N];
53 double cnt[N];
54 int n; ll ans;
55 int main() {
56     freopen("triangle.in", "r", stdin);
57     freopen("triangle.out", "w", stdout);
58     scanf("%d", &n);
59     cnt[n] = 1e61;
60     for(int i = 1 ; i <= n ; ++ i) scanf("%d%d", &x[i], &y[i]);
61     for(int i = 1 ; i <= n ; ++ i) {
62         int t = 0;
63         for(int j = 1 ; j <= n ; ++ j) {
64             if(j == i) continue;
65             if(x[i] == x[j]) cnt[++ t] = 1e60;
66             else cnt[++ t] = (double) (y[j] - y[i]) / (x[j] - x[i]);
67         }
68         sort(cnt + 1, cnt + 1 + t);
69         for(int j = 1, tmp = 1 ; j <= t ; ++ j) {
70             if(cnt[j] != cnt[j + 1]) ans += tmp * (n - 1 - tmp), tmp = 1;
71             else ++ tmp;
72         }
73     }
74     printf("%lld\n", ans / 6);
75 }
View Code

 

posted @ 2018-08-06 21:48  KingSann  阅读(247)  评论(0编辑  收藏  举报