原题下载
答案:
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N;
int A[1000][1000];
int S[1000], T[1000];
int main(void)
{
ifstream fin("nocross.in");
ofstream fout("nocross.out");
fin >> N;
for (int i=0; i<N; i++) fin >> S[i];
for (int i=0; i<N; i++) fin >> T[i];
A[0][0] = abs(S[0]-T[0])<=4;
for (int i=1; i<N; i++) A[i][0] = max(A[i-1][0], (int)(abs(S[i]-T[0]) <= 4));
for (int i=1; i<N; i++) A[0][i] = max(A[0][i-1], (int)(abs(S[0]-T[i]) <= 4));
for (int i=1; i<N; i++)
for (int j=1; j<N; j++)
A[i][j] = max( max(A[i-1][j], A[i][j-1]), A[i-1][j-1]+(abs(S[i]-T[j])<=4));
fout << A[N-1][N-1] << "\n";
return 0;
}

以上就是关于【USACO 2017 February Contest, Gold Problem 2. Why Did the Cow Cross the Road II】的解答,如需了解学校/赛事/课程动态,可至翰林教育官网获取更多信息。
往期文章阅读推荐:
5金3银!2026 IOAI国际人工智能奥赛收官!中国队取得历史性突破!
AI奥赛2026国家队名单公布! 新赛季翰林助力直通IOAI全球总决赛!

© 2026. All Rights Reserved. 沪ICP备2023009024号-1