题解2nd+AC91st(代码自研)
2026-01-17 18:29:24
发布于:河北
11阅读
0回复
0点赞
先引入头文件和命名空间
#include<iostream>
#include<algorithm>//sort排序
using namespace std;
之后定义cmp,让数组降序排序
int cmp(int a,int b){
if(a!=b){
return a>b;
}
return a<b;
}
接下来进入主函数
int main(){
int n,sum=0,a[50000],b[50000];//a记录“我”的马的速度,b记录田忌的马的速度
cin>>n;
int p=0,o=0,q=n;//指针,p是“我”最高速度的马,o是田忌最高速度的马,q是“我”最低速度的马
for(int i=0;i<n;i++){
cin>>a[i];
}
for(int i=0;i<n;i++){
cin>>b[i];
}//分别输入“我”的马的速度和田忌的马的速度
sort(a,a+n,cmp);
sort(b,b+n,cmp);
for(int i=1;i<=n;i++){
if(a[p]>b[o]){
p++,o++,sum++;
//如果“我”的马的最高速度大于田忌的马的最高速度,直接比较
}else{
o++,q--;//否则,用“我“最低速度的马消耗田忌最高速度的马
}
}
cout<<sum;
}
程序等价于在田忌按顺序派出马匹时(原题目)的最优策略不然我为什么会AK
全部评论 1
其实你直接 return a>b 就行
2026-01-19 来自 浙江
0















有帮助,赞一个