正经题解|田忌赛马
2026-04-06 15:08:12
发布于:河北
8阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
#include<vector>
#include<set>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n=0;
cin>>n;
vector<int> u(n),v(n);
for(int i=0;i<n;++i)
cin>>u[i];
for(int i=0;i<n;++i)
cin>>v[i];
multiset<int> my_horses(u.begin(),u.end());
int wins=0;
for(int i=0;i<n;++i){
int tianji_speed=v[i];
// 找到第一个大于tianji_speed的马
auto it=my_horses.upper_bound(tianji_speed);
if(it!=my_horses.end()){
// 能够战胜,使用这匹马
wins++;
my_horses.erase(it);
}else{
// 无法战胜,使用最慢的马送人头
if(!my_horses.empty())
my_horses.erase(my_horses.begin());
}
}
cout<<wins;
return 0;
}
这里空空如也








有帮助,赞一个