萌萌哒的传送门
这道题很明显,可以通过算出有多少个三元组在一条线上,总的结果减去就行。这个可以通过枚举每一个点,算出
数组其它的点跟这个点的斜率,如果斜率相同的,就意味着在同一条线上。然后就直接搞了
弱写的代码:
//package xdlove_acmer; import java.util.*; import java.io.*; import java.math.*; public class Main { static InputStream is; static PrintWriter out; static String INPUT = ""; static void solve() { int n = ni(); long ans = 1L * n * (n - 1) * (n - 2) / 6; int[] x = new int[n],y = new int[n]; Map<Double, Integer> mp = new HashMap<Double, Integer>(); for(int i = 0; i < n; i++) { x[i] = ni(); y[i] = ni(); } for(int i = 0; i < n; i++) { mp.clear();