三角形周长和
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
给定平面上nn个点的坐标,并且我们定义两个点的距离为曼哈顿距离.
曼哈顿距离是指对两个点(x1,y1),(x2,y2)(x1,y1),(x2,y2),他们之间的距离为∣x2−x1∣+∣y2−y1∣∣x2−x1∣+∣y2−y1∣.
.众所周知三个点可以构成一个三角形,那么nn个点可以构成Cn3Cn3个三角形,现在你需要求出所有三角形的周长和 输出在模998244353998244353意义下的答案.数据保证不存在三点共线.
输入描述:
第一行一个整数表示nn.
接下来nn行每行两个整数x,yx,y表示一个点.
输出描述:
输出一个整数表示周长和.
示例1
输入
3 0 0 1 0 1 1
输出
4
备注:
3≤n≤1e33≤n≤1e3
−1e9≤x,y≤1e9−1e9≤x,y≤1e9
首先暴力显然要超时
所以:先选择二条边 然后从剩下的n-2个点选
可以推出每条边要出现n-2次
加起来就行
const int MAX=100010;
const int MOD=998244353;
struct node {
ll x,y;
}point[MAX];
ll js(node a,node b){
return abs(a.x-b.x)+abs(b.y-a.y);
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>point[i].x>>point[i].y;
}
int k=n-2;
ll ans=0;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
ans=(ans+js(point[i],point[j])*k%MOD)%MOD;
}
}
cout<<ans;
}