蒟蒻求助
查看原帖
蒟蒻求助
1144555
gdfz02sjy楼主2024/7/13 16:19
#include<bits/stdc++.h>
using namespace std;
int dl[2][51],head=51,tail;//创建队列、头和尾。算头不算尾 
int a,b,c,d,sum,minn,mixb;//计数器、最小值和最小值的下标 
int main(){
	cin>>a;
	for(int i=0;i<a;i++){
		cin>>b>>c>>d;
		if(b==0){//地铁 
			head++;
			if(head==100)head=head%100;//循环队列,多50防止循环队列失效,计算时要%50 
			dl[0][head]=c;//票价 
			dl[1][head]=d;//时间 
			sum+=c;//加钱  
		}
		if(b==1){//公交车 
			minn=99999;//初始化 
			for(int j=tail+1;j<=head;j++){//开始寻找 
				if(dl[0][j]<minn&&dl[0][j]>=c){//价格可以 
					if(dl[1][j]+45>=d){//时间可以 
						minn=dl[0][j];
						mixb=j;
					}
					else{//TLE 
						dl[0][j]=-1;//设置一个异常值 
					}
				}
			}
			if(minn!=99999){//搞得到 
				dl[0][mixb]=-1;//设置一个异常值 
			}
			else{//搞不到 
				sum+=c;//加钱 
			}
			while(dl[0][tail]==-1&&tail+1<=head){
				tail++;//尾往前走 
				tail=tail%50;//保证循环队列 
			}
		}
	}
	cout<<sum;//输出 
	return 0;
}

在循环中a会莫名其妙变掉

2024/7/13 16:19
加载中...