双指针10分wa求助
查看原帖
双指针10分wa求助
1081864
Zoeli楼主2023/11/25 05:03
#include<bits/stdc++.h>
using namespace std;
int T,n,p[1000009];
int main(){
	cin>>T;
	while(T--){
		cin>>n;
		for(int i=1;i<=n;i++)
			cin>>p[i];
		int i=1,ans=0;
		while(i<=n){
			if(p[i]==i)
				i++;
			else{
				int j=i+1;
				int maxx=max(p[i],p[j]);
				while(maxx>j){//找到最大值应该在的地方 
					j++;
					maxx=max(maxx,p[i]);
				}
				ans+=j-i+1;//加上花费的代价 
				i=j+1;//重新再开始找新的需要排序的地方 
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

2023/11/25 05:03
加载中...