题目
思考
由于奶牛们不能超越,所以只要从后往前扫一遍就行了。
for(int i=n-1;i>=1;i--){
如果 当前扫到的奶牛的速度>领头的奶牛的速度
那么当前扫到的奶牛的速度=领头的奶牛的速度
否则 答案++;
}
注意!
答案(ans)>=1,即必会分一组,所以ans初值为1!
C++代码
#include<bits/stdc++.h>
#pragma GCC optimize(3)
#pragma GCC optimize(2)
using namespace std;
int n,ans=1,a[100005],b[100005];//ans初值为1
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i]>>b[i];//读入
for(int i=n-1;i>=1;i--){ //从后往前扫一遍
if(b[i]>b[i+1]) b[i]=b[i+1];//改变速度
else ans++; //否则答案++
}
cout<<ans; //输出
return 0;
}
算法
模拟