原题下载
答案:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
typedef pair<int,int> pii;
multiset<int> chickens;
vector<pii> cows;
int C, N;
int main(void)
{
ifstream fin("helpcross.in");
ofstream fout("helpcross.out");
fin >> C >> N;
int x, y, total=0;
for (int i=0; i<C; i++) { fin >> x; chickens.insert(x); }
for (int i=0; i<N; i++) { fin >> x >> y; cows.push_back(pii(y,x)); }
sort (cows.begin(), cows.end());
for (int j=0; j<N; j++) {
auto which_chicken = chickens.lower_bound(cows[j].second);
if (which_chicken != chickens.end() && *which_chicken <= cows[j].first) {
total++;
chickens.erase(which_chicken);
}
}
fout << total << "\n";
return 0;
}
以上就是关于【USACO 2017 February Contest, Silver Problem 1. Why Did the Cow Cross the Road】的解答,如需了解学校/赛事/课程动态,可至翰林教育官网获取更多信息。
往期文章阅读推荐:
2026 NOAI国际AI奥赛中国站即将开考!赛事地址&日程已出!
2027 USAAIO美国AI奥赛启动报名!MIT/谷歌/Jane Street集体站台!

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