abc391d TLE*9 WA*12 求调
  • 板块学术版
  • 楼主SmartWind
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/2/1 22:04
  • 上次更新2025/2/2 14:03:30
查看原帖
abc391d TLE*9 WA*12 求调
680131
SmartWind楼主2025/2/1 22:04
#include <bits/stdc++.h>
#define int long long
using namespace std;

const int N=2e5+7;

int ans[N],s[N];
int n,w,x,y,m,num=1;

struct node{
    int p,h;
};

struct edge{
    int a,t,x;
}a[N];

bool cmp(edge x,edge y){
    return x.t<y.t;
}

vector<node> v[N];

void query(int xx){
    while(a[num].t<=xx&&num<=m){
        if(!s[a[num].a]) ans[a[num].x]=1;
        num++;
    }
}

signed main(){
    cin>>n>>w;
    for(int i=1;i<=n;i++){
        cin>>x>>y;
        if(v[x].empty()) v[x].push_back({i,y-1});
        else{
            int z=y-v[x][v[x].size()-1].h;
            v[x].push_back({i,z-1});
        }
    }
    cin>>m;
    for(int i=1;i<=m;i++){
        cin>>a[i].t>>a[i].a;
        a[i].x=i;
    }
    sort(a+1,a+m+1,cmp);
    int t=1e9;
    for(int i=1;i<=w;i++){
        t=min(t,(int)v[i].size());
    }
    int tt=0;
    while(t--){
        int tim=0;
        for(int i=1;i<=w;i++) tim=max(tim,v[i][0].h);
        query(tt+tim);
        for(int i=1;i<=w;i++) s[v[i][0].p]=1;
        tt+=tim+1;
        for(int i=1;i<=w;i++) v[i].erase(v[i].begin());
    }
    query(1e9);
    for(int i=1;i<=m;i++){
        if(ans[i]) puts("Yes");
        else puts("No");
    }
    return 0;
}
2025/2/1 22:04
加载中...