列表

详情


NC204018. 三角形周长和

描述

给定平面上个点的坐标,并且我们定义两个点的距离为曼哈顿距离.
曼哈顿距离是指对两个点,他们之间的距离为.
.众所周知三个点可以构成一个三角形,那么个点可以构成个三角形,现在你需要求出所有三角形的周长和 输出在模意义下的答案.数据保证不存在三点共线.

输入描述

第一行一个整数表示.
接下来行每行两个整数表示一个点.

输出描述

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

示例1

输入:

3
0 0
1 0
1 1

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 7ms, 内存消耗: 600K, 提交时间: 2020-03-28 10:26:04

#include<bits/stdc++.h>
using namespace std;
long long n,x[1010],y[1010],ans = 0;
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++){
       cin>>x[i]>>y[i];
        for(int j = 1;j<i;j++){
            ans=(ans+abs(x[i]-x[j])+abs(y[i]-y[j]))%998244353;
        }
    }
    cout<<ans*(n-2)%998244353;
    return 0;
}

C(clang 3.9) 解法, 执行用时: 4ms, 内存消耗: 376K, 提交时间: 2020-04-03 13:16:30

long long z,n,x[1005],y[1005];
int main(){
    scanf("%lld",&n);
    for(int i=1;i<=n;i++){
        scanf("%lld%lld",&x[i],&y[i]);
        for(int j=1;j<=i;j++){
            z=(z+abs(x[i]-x[j])+abs(y[i]-y[j]))%998244353;
        }
    }
    printf("%lld\n",z*(n-2)%998244353);
}

C++11(clang++ 3.9) 解法, 执行用时: 8ms, 内存消耗: 604K, 提交时间: 2020-03-28 10:55:23

#include<bits/stdc++.h>
using namespace std;
long long n,x[1005],y[1005],sum;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>x[i]>>y[i];
	for(int i=1;i<=n;i++)
	for(int j=i+1;j<=n;j++)
	sum=(sum+(abs(x[i]-x[j])+abs(y[i]-y[j]))*(n-2))%998244353;
	cout<<sum;
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 499ms, 内存消耗: 3684K, 提交时间: 2020-04-01 15:51:28

n=int(input())
arr=[list(map(int,input().split())) for i in range(n)]
p=998244353
res=0
for i in range(n) :
    for j in range(i,n) :
        res=(res+(abs(arr[i][0]-arr[j][0])+abs(arr[i][1]-arr[j][1]))*(n-2)) % p
print(res)

上一题