出什么问题了(急)
  • 板块灌水区
  • 楼主fatalis1919
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/14 22:30
  • 上次更新2024/10/15 13:07:40
查看原帖
出什么问题了(急)
1415880
fatalis1919楼主2024/10/14 22:30

P5661 [CSP-J2019] 公交换乘 题解

#include<bits/stdc++.h>
using namespace std;
struct subway
{
    bool bs;
    int price;
    int time;
}sb[114514];
struct ticket
{
    int latest;
    bool used;
    int price;
}tic[114514];
int head=0,tail=0,ntime;
bool isf;
int main()
{
    int n,sum=0;
    cin >> n;
    for(int i=0;i<n;i++)
    {
        cin >> sb[i].bs >> sb[i].price >> sb[i].time;
    }
    for(int i=0;i<n;i++)
    {
        ntime=sb[i].time;
            if(sb[i].bs==false)
            {
                sum+=sb[i].price;
                tic[head].price=sb[i].price;
                tail++;
                tic[head].used=false;
                tic[head].latest=ntime+45;
            }
            else
            {
                while(head < tail && (tic[head].latest <= ntime|| tic[head].used==true))
                {
                    head++;
                }
                isf=false;
                for(int j=head;j<=tail;j++)
                {
                    if(tic[j].price>=sb[i].price)
                    {
                        tic[j].used=true;
                        isf=true;
                        break;
                    }
                }
                if(isf==false)
                {
                    sum+=sb[i].price;
                    //cout << 1;
                }
            }
    }
    cout << sum;
}
2024/10/14 22:30
加载中...