MLE怎么处理
查看原帖
MLE怎么处理
702449
feng_nuoyiman楼主2022/6/5 23:05

rt,测评信息

源码(这个题想了一天了)

#include<iostream>
#include<cmath>
using namespace std;
long long n,m,k[1005];
long long position[105][10005],query1,query2;
long long judge[105][300005];
long long ans[10005];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=3000;j++){
			judge[i][j]=-1*i;
		}
	}
	for(int i=1;i<=n;i++){
		cin>>k[i];
		int a=0;
		for(int j=1;j<=k[i];j++){
			cin>>position[i][j];
			if(j>=2){
				a++;
				judge[i][a]=position[i][j-1];
				if(position[i][j-1]<position[i][j]){
					while(judge[i][a]<position[i][j]-1){
						judge[i][a+1]=judge[i][a]+1;
						a++;
					}
				}
				else if(position[i][j-1]>position[i][j]){
					while(judge[i][a]>position[i][j]+1){
						judge[i][a+1]=judge[i][a]-1;
						a++;
					}
				}
			}
			if(j==k[i]){
				judge[i][a+1]=position[i][k[i]];
			}
		}
	}
	for(int i=1;i<=m;i++){
		cin>>query1>>query2;
		int a=2;
		while(judge[query1][a]>=0&&judge[query2][a]>=0){
			if(judge[query1][a]>judge[query2][a]&&judge[query1][a-1]<judge[query2][a-1]){
				ans[i]++;
			}
			if(judge[query1][a]==judge[query2][a]){
				ans[i]++;
			}
			if(judge[query1][a]<judge[query2][a]&&judge[query1][a-1]>judge[query2][a-1]){
				ans[i]++;
			}
			a++;
		}
	}
	for(int i=1;i<=m;i++){
		cout<<ans[i]<<endl;
	}
	/*for(int i=1;i<=n;i++){
		for(int j=1;j<=10;j++){
			cout<<judge[i][j]<<' ';
		}
		cout<<endl;
	}*/	
	return 0; 
}

不过话说回来,这个题怎么没有人做啊QWQ

2022/6/5 23:05
加载中...