NC21670. 两条公路
描述
输入描述
第一行输入一个整数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
示例2
输入:
6 0 1 2 3 4 5 2 2 2 2 2 2
输出:
2
示例3
输入:
4 2 2 3 3 2 3 2 3
输出:
4
Python3 解法, 执行用时: 509ms, 内存消耗: 6512K, 提交时间: 2023-05-24 13:19:52
n = int(input()) x_ = list(map(int,input().split())) y_ = list(map(int,input().split())) z = {} f = {} for i in range(n): z1 = y_[i]-x_[i] f1 = y_[i]+x_[i] if z1 not in z: z[z1] = set() if f1 not in f: f[f1] = set() z[z1].add(i) f[f1].add(i) ans = 0 for i in z.values(): for j in f.values(): daan = len(i|j) ans = max(ans,daan) print(ans)
C(clang 3.9) 解法, 执行用时: 398ms, 内存消耗: 376K, 提交时间: 2019-03-18 19:26:17
#include<stdio.h> int x[1001],y[1001],i,j,m,n,b1,b2,sum,max=0; int main() { scanf("%d",&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++) { b1=y[i]-x[i]; for(j=0;j<n;j++) { b2=x[j]+y[j]; for(sum=0,m=0;m<n;m++) { if(y[m]-x[m]==b1||y[m]+x[m]==b2)sum++; } if(sum>max)max=sum; } } printf("%d",max); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 412ms, 内存消耗: 464K, 提交时间: 2022-10-26 20:49:52
#include <iostream> using namespace std; int main(){ int a[1010],b[1010]; int n,cnt=0,maxx=0,p=0,q=0; cin>>n; for(int i=0;i<n;i++) {cin>>a[i];} for(int i=0;i<n;i++) {cin>>b[i];} for(int i=0;i<n;i++){ p=b[i]-a[i]; for(int j=0;j<n;j++){cnt=0;q=b[j]+a[j]; for(int k=0;k<n;k++){ if(b[k]-a[k]==p||b[k]+a[k]==q) cnt++;} maxx=max(maxx,cnt); } } cout<<maxx<<endl; return 0; }