第十屆藍橋杯省賽C++A/C組 外賣店優先順序 籃球杯,奇奇怪怪の模擬
阿新 • • 發佈:2022-04-06
真的很奇怪,考場上應該很難想到吧,不過一想到暴力mle還能90分我就...
#include<bits/stdc++.h> #define rep(i,x,n) for(int i=x;i<=n;i++) using namespace std; const int N = 1e5+10; int n,m,t; int a[N]; int pre[N]; int st[N]; struct node{ int t,id; }q[N]; bool cmp(node a,node b) { if(a.t==b.t) return a.id<b.id; else return a.t<b.t; }//按時間順序排列 main() { cin >> n >> m >> t; rep(i,1,m) cin >> q[i].t >> q[i].id; sort(q+1,q+m+1,cmp); int i=1; while(i<=m) { int j=i; while(j<=m&&q[i].id==q[j].id&&q[i].t==q[j].t) j++; int cnt=j-i;//同一家店鋪訂單的個數 int cur=q[i].t,id=q[i].id; i=j; a[id]-=cur-pre[id]-1;//算了減少的數量 pre[id]=cur; if(a[id]<0) a[id]=0; if(a[id]<=3) st[id]=0; a[id]+=cnt*2; if(a[id]>5) st[id]=1; } int ans=0; rep(id,1,n) { if(pre[id]!=t) a[id]-=t-pre[id]; if(a[id]<=0) a[id]=0; if(a[id]<=3) st[id]=0; ans+=st[id]; } cout << ans; }