三角形周长和(暴力)

 题目保证了三点不共线,也就是说任意三个点都能构成三角形

我当时也不知到怎么想的,还想到了判断是不是三角形,可能是上一个题的缘故,做不出来觉得这个题也没有希望

假设有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;
}

猜你喜欢

转载自www.cnblogs.com/xcfxcf/p/12585780.html
今日推荐