제출 #1288188

#제출 시각아이디문제언어결과실행 시간메모리
1288188vulestamenkovicTrains (BOI24_trains)C++20
100 / 100
173 ms253268 KiB
#include<bits/stdc++.h> #define int long long #define MAXN (int)1e5+5 #define MAXS 320 using namespace std; const int mod=1e9+7; int d[MAXN],x[MAXN],p[MAXN][MAXS],dp[MAXN]; void solve() { int n;cin>>n; for(int i=1;i<=n;i++){ cin>>d[i]>>x[i]; dp[i]=1; } for(int j=1;j*j<=n;j++){ p[n][j]=1; } for(int i=n-1;i>=1;i--){ if(d[i]){ if(d[i]*d[i]<=n){ if(i+d[i]<=n){ dp[i]+=(p[i+d[i]][d[i]]-p[min(i+(x[i]+1)*d[i],n+1)][d[i]]+mod)%mod; dp[i]%=mod; } }else{ for(int j=1;j<=x[i]&&i+j*d[i]<=n;j++){ dp[i]=(dp[i]+dp[i+j*d[i]])%mod; } } } for(int j=1;j*j<=n;j++){ p[i][j]=dp[i]+(i+j<=n?p[i+j][j]:0ll); } } cout<<dp[1]<<'\n'; } int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int32_t T=1;//cin>>T; while(T--) { solve(); } return 0; }
#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...