题目传送

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format:%lld

题目描述

输入描述:
输入描述

第一行一个整数表示n. 接下来n行每行两个整数x,y表示一个点.

输出描述:

输出一个整数表示周长和.

示例1
输入

3
0 0
1 0
1 1

输出

4

备注:

3≤n≤1e3
−1e9≤x,y≤1e9
题解:
又到了找规律的时间:
n个点构成C3n个三角形,注意由没有三点共线,说明任意三个点都可以构成三角形
比如有n个点,现将每两点之间的马哈顿距离算出来,并求出总值sum。
然后构建三角形,选取两个点A和B,那第三个点就可以从剩下(n-2)个点里找,也就是有(n-2)个选择 ,那A与B之间的这个边就被用了(n-2)次,然后另外两个点,再这样操作。你会发现每个边都被用了(n-2)次
所以最后结果就是sum*(n-2)

千万不要忘了 mod
代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
ll a[1004];
ll b[1004];
ll w(ll x1,ll y1,ll x2,ll y2)
{
   
	return abs(x2-x1)+abs(y2-y1);
}
int main()
{
   
	int n;
	ll sum=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
   
		cin>>a[i]>>b[i];
	}
	for(int i=1;i<=n;i++)
	{
   
		for(int j=i+1;j<=n;j++)
		{
   
			sum=(sum+w(a[i],b[i],a[j],b[j]))%mod;
		}
	}
	cout<<sum*(n-2)%mod;
	return 0;
}