Submission #644636

#TimeUsernameProblemLanguageResultExecution timeMemory
644636guagua0407Toll (BOI17_toll)C++17
0 / 100
266 ms99144 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define F first #define S second #define all(x) x.begin(),x.end() #define _ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); void setIO(string s) { freopen((s + ".in").c_str(), "r", stdin); freopen((s + ".out").c_str(), "w", stdout); } int k,n,m,o; const int mxn=5e4+4; int dp[mxn][20][5][5]; int ans[5][5]; int tmp[5][5]; void ckmin(int a[5][5],int b[5][5],int c[5][5]){ for(int x=0;x<5;x++){ for(int y=0;y<5;y++){ for(int z=0;z<5;z++){ a[x][z]=min(a[x][z],b[x][y]+c[y][z]); } } } } int main() {_ //setIO("wayne"); cin>>k>>n>>m>>o; memset(dp,0x3f,sizeof dp); for(int i=0;i<m;i++){ int a,b,t; cin>>a>>b>>t; dp[a/k][0][a%k][b%k]=t; } for(int j=1;j<20;j++){ for(int i=0;i + (1 << j) < (n + k - 1) / k;i++){ ckmin(dp[i][j],dp[i][j-1],dp[i+(1<<j-1)][j-1]); } } for(int i=0;i<o;i++){ int a,b; cin>>a>>b; int node=a/k; int length=(b/k)-(a/k); memset(ans,0x3f,sizeof ans); for(int i=0;i<5;i++){ ans[i][i]=0; } //cout<<length<<'\n'; for(int i=0;i<20;i++){ if(length&(1<<i)){ memset(tmp,0x3f,sizeof tmp); ckmin(tmp,ans,dp[node][i]); memcpy(ans,tmp,sizeof ans); } } cout<<(ans[a%k][b%k]==0x3f3f3f3f?-1:ans[a%k][b%k])<<'\n'; } return 0; } //maybe its multiset not set

Compilation message (stderr)

toll.cpp: In function 'int main()':
toll.cpp:41:40: warning: suggest parentheses around '-' inside '<<' [-Wparentheses]
   41 |    ckmin(dp[i][j],dp[i][j-1],dp[i+(1<<j-1)][j-1]);
      |                                       ~^~
toll.cpp: In function 'void setIO(std::string)':
toll.cpp:10:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  freopen((s + ".in").c_str(), "r", stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
toll.cpp:11:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |  freopen((s + ".out").c_str(), "w", stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...