题目保证了三点不共线,也就是说任意三个点都能构成三角形
我当时也不知到怎么想的,还想到了判断是不是三角形,可能是上一个题的缘故,做不出来觉得这个题也没有希望
假设有A B C D E五个点
可以构成的三角形有
ABC ABD ABE
ACD ACE
ADE
BCD BCE
BDE
CDE
所有三角形的周长和
转化为每一条边
比如AB 在所有的三角形中出现了3次
AC也是 3次
其他边也是三次
如果有n个,每一条边出现的次数就是n - 2次
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 1e3 + 5; const int mod = 998244353; int n; int ans; pair<int,int> p[maxn]; int dist(pair<int,int> a,pair<int,int> b){ return abs(a.first - b.first) + abs(a.second - b.second); } signed main() { //freopen("in", "r", stdin); ios::sync_with_stdio(); cin >> n; for (int i = 1; i <= n; i++) cin >> p[i].first >> p[i].second; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) ans = (ans + dist(p[i],p[j]) * (n - 2)) % mod; } cout << ans; return 0; }