提交记录 28688


用户 题目 状态 得分 用时 内存 语言 代码长度
FFTotoro noi18a. 【NOI2018】归程 Accepted 100 2.226 s 162892 KB C++17 2.20 KB
提交时间 评测时间
2025-11-24 09:25:00 2025-11-24 09:25:26
#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
typedef tuple<int,int,int> tpi;
namespace IAOI_lib{
  template<typename T> class dsu{
    private:
      vector<T> a;
      vector<int> s;
    public:
      dsu(int n){
        a.resize(n),s.resize(n);
        iota(a.begin(),a.end(),0);
        fill(s.begin(),s.end(),1);
      }
      T leader(T x){
        return a[x]==x?x:a[x]=leader(a[x]);
      }
      int size(T x){
        return s[leader(x)];
      }
      void merge(T f,T x,T y){
        x=leader(x),y=leader(y);
        s[a[x]=a[y]=f]=s[x]+s[y]+1;
      }
      bool same(T x,T y){
        return leader(x)==leader(y);
      }
  };
}
main(){
  ios::sync_with_stdio(false);
  int t; cin>>t;
  while(t--){
    int n,m,c,lst=0; cin>>n>>m,c=n;
    vector<vector<tpi> > g(n);
    vector<tpi> e(n);
    for(int i=0;i<m;i++){
      int u,v,l,a; cin>>u>>v>>l>>a;
      e.emplace_back(a,--u,--v);
      g[u].emplace_back(v,l,a);
      g[v].emplace_back(u,l,a);
    }
    vector<pii> f(n<<1,make_pair(1e16,0));
    vector<bool> b(n);
    priority_queue<pii,vector<pii>,greater<> > Q;
    Q.emplace(f[0].first=0,0);
    while(!Q.empty()){
      int u=Q.top().second; Q.pop();
      if(b[u])continue; b[u]=true;
      for(auto [i,l,a]:g[u])
        if(f[i].first>f[u].first+l)
          Q.emplace(f[i].first=f[u].first+l,i);
    }
    sort(e.begin(),e.end(),greater<>());
    IAOI_lib::dsu<int> mst(n<<1);
    vector<vector<int> > t(n<<1);
    for(auto [w,u,v]:e)
      if(!mst.same(u,v)){
        t[c].emplace_back(mst.leader(u));
        t[c].emplace_back(mst.leader(v));
        mst.merge(c,u,v);
        f[c].second=w;
        if(++c==n<<1)break;
      }
    vector<int> d(n<<1);
    int l=__lg(n)+1; vector s(n<<1,vector<int>(l+1));
    function<void(int,int)> dfs=[&](int u,int r){
      s[u][0]=r; for(int i=1;i<=l;i++)
        s[u][i]=s[s[u][i-1]][i-1];
      for(int i:t[u])
        dfs(i,u),f[u].first=min(f[u].first,f[i].first);
    };
    dfs(n-1<<1,n-1<<1);
    int q,k,h; cin>>q>>k>>h;
    while(q--){
      int v,p; cin>>v>>p;
      (v+=k*lst-1)%=n,(p+=k*lst)%=h+1;
      for(int i=l;~i;i--)
        if(f[s[v][i]].second>p)v=s[v][i];
      cout<<(lst=f[v].first)<<'\n';
    }
  }
  return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #146.08 us56 KBAcceptedScore: 5

Testcase #282.89 us64 KBAcceptedScore: 5

Testcase #3342.57 us96 KBAcceptedScore: 5

Testcase #4534.53 us136 KBAcceptedScore: 5

Testcase #56.767 ms1 MB + 140 KBAcceptedScore: 5

Testcase #61.374 s150 MB + 628 KBAcceptedScore: 5

Testcase #75.072 ms992 KBAcceptedScore: 5

Testcase #85.168 ms1000 KBAcceptedScore: 5

Testcase #94.987 ms992 KBAcceptedScore: 5

Testcase #101.128 s132 MB + 36 KBAcceptedScore: 5

Testcase #111.132 s132 MB + 40 KBAcceptedScore: 5

Testcase #121.519 s155 MB + 620 KBAcceptedScore: 5

Testcase #131.52 s155 MB + 608 KBAcceptedScore: 5

Testcase #141.522 s155 MB + 624 KBAcceptedScore: 5

Testcase #157.254 ms1 MB + 168 KBAcceptedScore: 5

Testcase #167.287 ms1 MB + 164 KBAcceptedScore: 5

Testcase #171.523 s155 MB + 592 KBAcceptedScore: 5

Testcase #181.519 s155 MB + 608 KBAcceptedScore: 5

Testcase #192.226 s159 MB + 60 KBAcceptedScore: 5

Testcase #202.224 s159 MB + 76 KBAcceptedScore: 5


Judge Duck Online | 评测鸭在线
Server Time: 2025-11-24 19:29:33 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠