Submission #912290

#TimeUsernameProblemLanguageResultExecution timeMemory
912290imarnToll (BOI17_toll)C++14
7 / 100
109 ms166788 KiB
#include<bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #define ll long long #define pii pair<int,int> #define f first #define s second #define pb push_back #define all(x) x.begin(),x.end() #define vi vector<int> using namespace std; ll dp[50001][17][5][5];int k; void pre(int i,int j,int ii,int jj,int iii,int jjj){ for(int x=0;x<k;x++){ for(int y=0;y<k;y++){ for(int z=0;z<k;z++){ dp[i][j][x][y]=min(dp[i][j][x][y],dp[ii][jj][x][z]+dp[iii][jjj][z][y]); } } } } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n,m,o;cin>>k>>n>>m>>o; for(int i=0;i<50001;i++)for(int j=0;j<17;j++)for(int t=0;t<5;t++)for(int l=0;l<5;l++)dp[i][j][t][l]=1e15; while(m--){ int a,b,t;cin>>a>>b>>t; dp[a/k][0][a%k][b%k]=t; } for(int j=1;j<17;j++){ for(int i=0;i<(n+k-1)/k;i++){ if(i+(1<<(j-1))<50001)pre(i,j,i,j-1,i+(1<<(j-1)),j-1); } }ll ans[5]={0},tmp[5]={0}; while(o--){ int a,b;cin>>a>>b; if(a==b){ cout<<0<<'\n';continue; } for(int i=0;i<5;i++)ans[i]=0; int cur=a/k,dest=b/k; for(int i=16;i>=0;i--){ if(cur+(1<<i)<=dest){ for(int x=0;x<k;x++)tmp[x]=1e15; for(int y=0;y<k;y++){ for(int z=0;z<k;z++){ tmp[y]=min(tmp[y],ans[z]+dp[cur][i][z][y]); } }for(int x=0;x<k;x++)ans[x]=tmp[x]; cur+=(1<<i); } }cout<<(ans[b%k]==1e15?-1:ans[b%k])<<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...