2 条题解

  • 2
    @ 2024-10-8 20:32:06

    下面是完整的AC代码 如果有不清楚的地方请借助代码注释理解

    #include<bits/stdc++.h>// 引入 C++ 万能头 
    using namespace std;
    const int Max=100005;
    //建立结构体 
    struct Tickey
    {
    	int dollar,use,time;
    }q[Max];
    
    int main()
    {
    	int head=0,n,tail=0,cost=0;
    	cin >> n;
    	for(int i = 0;i < n;i++)
    	{
    		int type,time,dollar;
    		cin >> type >> dollar >> time;//输入
    		//判断交通工具类型 
    		if(type==0)
    		{
    			cost += dollar;
    			q[tail].time+=time + 45;//过期时间=购买时间+45分钟 
    			q[tail++].dollar+=dollar;//由于是地铁,无法优惠,直接购买 
    		}
    		else
    		{
    			//先用一个循环把过期的票扔掉 
    			while(head < tail&&q[head].time<time)
    			{
    				head++;
    			}
    			bool find=false;
    			for(int j=head;j<tail;j++)
    			{
    				//如果优惠票合适,标记此票用过,标记已使用优惠票 
    				if(q[j].dollar>=dollar&&q[j].use==0)
    				{
    					q[j].use=1;
    					find=true;
    					break;
    				}
    			}
    			//如果没有合适的优惠票,就自己掏钱买吧 
    			if(!find)
    			{
    				cost+=dollar;
    			}
    		}
    	}
    	cout << cost;
    	return 0;
     } 
    

    写题解不易,还望各位点个赞!

    信息

    ID
    1795
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    35
    已通过
    14
    上传者