因为n的范围比较小,可以直接暴力n^2算一下,在排序之后,算一下以第i个为结尾的最多可以击败的怪物数量
void solve(){
int n,H,A;
cin>>n>>H>>A;
vector<pair<int,int>>g(n);
for(int i=0;i<n;i++){
cin>>g[i].first;
}
for(int i=0;i<n;i++){
cin>>g[i].second;
}
sort(g.begin(),g.end());
vector<int> f(n,1);
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
if(g[j].first<g[i].first&&g[j].second<g[i].second){
f[i]=max(f[j]+1,f[i]);
}
}
}
int ans=0;
for(int i=0;i<n;i++){
if(g[i].first<H&&g[i].second<A){
ans=max(ans,f[i]);
}
}cout<<ans;
}

京公网安备 11010502036488号