提交记录 16351


用户 题目 状态 得分 用时 内存 语言 代码长度
TOE noi18a. 【NOI2018】归程 Time Limit Exceeded 95 4 s 150408 KB C++ 3.63 KB
提交时间 评测时间
2021-07-13 20:40:39 2021-07-13 20:41:00
#include<ctime>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define reg register
#define uni unsigned
using namespace std;
const uni N=400010,ISIZE=1<<26,OSIZE=1<<23,W=4,WT=4;
uni n,m,cnt,p[N],s[N],map[N],d[N<<4],w[N],up[N][23],mi[N],mx[N];
uni st[N],OnF;
uni seed=time(0);
struct edge{
    uni u,v,x,y;
}e[N];
struct CFS{
    uni a[N],last,b[N+N][3];
    void add(uni x,uni y,uni z){
        b[++last][0]=a[x];
        b[a[x]=last][1]=y;
        b[last][2]=z;
    }
}a,b;
char BuF[ISIZE],*InF=BuF,WuF[OSIZE];
uni read(){
    reg uni x=0;
    for(;47>*InF||*InF>58;++InF);
    for(;47<*InF&&*InF<58;x=x*10+(*InF++^48));
    return(x);
}
void write(uni x){
    if(!x){
        WuF[OnF++]=48;
    }
    for(;x;x/=10){
        st[++st[0]]=x%10+48;
    }
    for(;st[0];WuF[OnF++]=st[st[0]--]);
    WuF[OnF++]='\n';
}
bool cmp(edge a,edge b){
    return(a.y>b.y);
}
uni root(uni x){
    return(s[x]?s[x]=root(s[x]):x);
}
void kruskal(){
    sort(e,e+m,cmp);
    for(reg uni i=0,x,y;i<m;++i){
        if((x=root(e[i].u))!=(y=root(e[i].v))){
            p[s[x]=s[y]=++cnt]=e[i].y;
            b.add(cnt,x,0);
            b.add(cnt,y,0);
        }
    }
}
uni rnd(uni l,uni r){
    seed^=seed<<17;seed^=seed>>15;seed^=seed<<3;
    return(seed%(r-l+1)+l);
}
void change(reg uni &x,reg uni &y){
    swap(map[x],map[y]);
    swap(x,y);
}
void spfa(){
    memset(w,127,sizeof(w));
    w[d[0]=1]=0;
    for(reg uni h=0,t=0;h<=t;++h){
        reg uni *hd=d+h;
        if(h+W+W+3<t){
            for(reg uni i=0,l=h+W+2,r=t-W-1;i<=WT;++i){
                reg uni x=rnd(l,r);
                if(w[*hd]>w[d[x]]){
                    change(*hd,d[x]);
                }
            }
        }
        for(reg uni *i=d+h+1,*j=d+t,*r=d+h+W;i<r&&i<j;++i,--j){
            if(w[*hd]>w[*i]){
                change(*hd,*i);
            }
            if(w[*hd]>w[*j]){
                change(*hd,*j);
            }
        }
        for(reg uni tmp=*hd,i=a.a[tmp];i;i=a.b[i][0]){
            reg uni nxt=a.b[i][1],p=w[tmp]+a.b[i][2];
            if(w[nxt]>p){
                w[nxt]=p;
                if(map[nxt]){
                    if(w[nxt]<w[d[t]]){
                        change(d[map[nxt]],d[t]);
                    }
                }else{
                    d[map[nxt]=++t]=nxt;
                    if(t>h+1&&w[d[t-1]]<w[d[t]]){
                        change(d[t],d[t-1]);
                    }
                }
            }
        }
        map[*hd]=0;
    }
}
void dfs(uni x){
    for(reg uni &i=mx[x]=1;up[x][i-1];++i){
        up[x][i]=up[up[x][i-1]][i-1];
    }
    mi[x]=x>n?0x7fffffff:w[x];
    for(reg uni i=b.a[x];i;i=b.b[i][0]){
        up[b.b[i][1]][0]=x;
        dfs(b.b[i][1]);
        mi[x]=min(mi[x],mi[b.b[i][1]]);
    }
}
int main(){
    fread(BuF,1,ISIZE,stdin);
    for(uni T=read(),lastans=0;T;--T){
        n=read();m=read();
        cnt=n;
        lastans=a.last=b.last=0;
        memset(s,0,sizeof(s));
        memset(a.a,0,sizeof(a.a));
        memset(b.a,0,sizeof(b.a));
        for(reg uni i=0;i<m;++i){
            e[i].u=read();e[i].v=read();e[i].x=read();e[i].y=read();
            a.add(e[i].u,e[i].v,e[i].x);
            a.add(e[i].v,e[i].u,e[i].x);
        }
        kruskal();
        spfa();
        dfs(cnt);
        for(reg uni Q=read(),K=read(),S=read();Q;--Q){
            reg uni vi=read(),pi=read();
            if(K){
                vi=(vi+lastans-1)%n+1;
                pi=(pi+lastans)%(S+1);
            }
            for(reg uni i=mx[vi]-1;~i;--i){
                if(up[vi][i]&&p[up[vi][i]]>pi){
                    vi=up[vi][i];
                }
            }
            write(lastans=mi[vi]);
        }
    }
    fwrite(WuF,1,OnF,stdout);
    return(0);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1850.31 us6 MB + 156 KBAcceptedScore: 5

Testcase #2858.5 us6 MB + 168 KBAcceptedScore: 5

Testcase #3904.03 us6 MB + 184 KBAcceptedScore: 5

Testcase #4955.01 us6 MB + 212 KBAcceptedScore: 5

Testcase #52.64 ms6 MB + 908 KBAcceptedScore: 5

Testcase #63.48 s113 MB + 160 KBAcceptedScore: 5

Testcase #72.095 ms6 MB + 860 KBAcceptedScore: 5

Testcase #82.099 ms6 MB + 868 KBAcceptedScore: 5

Testcase #92.092 ms6 MB + 864 KBAcceptedScore: 5

Testcase #10372.709 ms85 MB + 4 KBAcceptedScore: 5

Testcase #11375.86 ms85 MB + 204 KBAcceptedScore: 5

Testcase #123.589 s127 MB + 484 KBAcceptedScore: 5

Testcase #133.444 s127 MB + 932 KBAcceptedScore: 5

Testcase #143.385 s125 MB + 492 KBAcceptedScore: 5

Testcase #153.134 ms7 MB + 12 KBAcceptedScore: 5

Testcase #163.194 ms7 MB + 20 KBAcceptedScore: 5

Testcase #173.49 s126 MB + 768 KBAcceptedScore: 5

Testcase #183.7 s126 MB + 776 KBAcceptedScore: 5

Testcase #193.91 s146 MB + 904 KBAcceptedScore: 5

Testcase #204 s143 MB + 308 KBTime Limit ExceededScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-19 08:45:40 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠