NC18951. 两条斜线
描述
输入描述
第一行输入一个整数N表示点的个数
第二行输入N个数表示X坐标
第三行输入N个数表示Y坐标
1<=N<=1000 ,0<=x[i],y[i]<=999
输出描述
输出一个整数
示例1
输入:
4 1 4 4 5 3 0 2 3
输出:
4
说明:
(1,3) (4,0) (4,2) (5,3)四个点都可以被经过Python3 解法, 执行用时: 551ms, 内存消耗: 13152K, 提交时间: 2023-03-06 09:20:29
from collections import defaultdict n = int(input()) x = list(map(int,input().split())) y = list(map(int,input().split())) b1 = defaultdict(set) b2 = defaultdict(set) for i in range(n): b1[x[i]-y[i]].add(i) b2[x[i]+y[i]].add(i) res = [] for i in b1.keys(): for j in b2.keys(): res.append(len(b1[i]|b2[j])) print(max(res))
C 解法, 执行用时: 400ms, 内存消耗: 436K, 提交时间: 2023-03-12 14:32:00
#include<stdio.h> int main(){ int n,i,j,k,t1,t2,ans,max=0; scanf("%d",&n); int x[n],y[n]; for(i=0;i<n;i++) scanf("%d",&x[i]); for(i=0;i<n;i++) scanf("%d",&y[i]); for(i=0;i<n;i++){ t1=y[i]-x[i]; for(j=0;j<n;j++){ ans=0; t2=y[j]+x[j]; for(k=0;k<n;k++){ if(y[k]-x[k]==t1||y[k]+x[k]==t2) ans++; } if(max<ans) max=ans; } } printf("%d",max); }
C++11(clang++ 3.9) 解法, 执行用时: 347ms, 内存消耗: 524K, 提交时间: 2020-01-17 15:12:04
#include<stdio.h> int main() {int n,i,j,k,a1,b1,t,s=0; scanf("%d",&n); int a[n],b[n]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) scanf("%d",&b[i]); for(i=0;i<n;i++) {b1=a[i]-b[i]; for(j=0;j<n;j++) {t=0; a1=a[j]+b[j]; for(k=0;k<n;k++) if(a[k]+b[k]==a1||a[k]-b[k]==b1) t++; if(t>s)s=t; } } printf("%d",s); }