各位大佬看看
查看原帖
各位大佬看看
713098
Koei楼主2023/8/9 14:27

开o2,70分。

不开o2,35分。

//会TLE 
#include<bits/stdc++.h>
using namespace std;
struct node{
	int lx,jg,sj;//lx类型,jg价格,sj时间。 
}a[100010];
struct qst{
	int qs,cs,ny;//qs钱数,cs时间,ny是否用过。 
}b[100010];
int main (){
	int n,k=0,ans=0,lo=0;//k,b数组的下标,ans总钱数,lo是否免费(0不免费,1免费); 
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].lx>>a[i].jg>>a[i].sj;//输入 
		if(a[i].lx==0){//0时是地铁 
			k++;//第k张优惠券 
			b[k].qs=a[i].jg;//存优惠券 
			b[k].cs=a[i].sj;//存优惠券 
			b[k].ny=1;//存优惠券 
		}else if(a[i].lx==1){//1时是公交车 
			for(int j=1;j<=k;j++){
				if((b[j].qs>=a[i].jg)/*比钱数*/&&(a[i].sj-b[j].cs<=45)/*看时间*/&&(b[j].ny==1)/*是否用过第j张优惠券*/){
					lo=1;//免费 
					b[j].ny=0;//去掉这张优惠券 
					break;
				}
			}
		}
		//cout<<lo<<" ";
		if(lo==1){//免费 
			lo=0;
		}else if(lo==0){//不免费 
			ans=ans+a[i].jg;
		}
		//cout<<ans<<" "<<k<<"\n";
	}
	cout<<ans;//输出总钱数 
	return 0;
}
2023/8/9 14:27
加载中...