제출 #1273965

#제출 시각아이디문제언어결과실행 시간메모리
1273965tormentTrains (BOI24_trains)C++20
100 / 100
143 ms118628 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; const int B = 300; const int MOD = 1e9 + 7; int dp[N], S[B][N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<array<int, 2>>v(n); for(int i = 0;i < n;++i){ cin >> v[i][0] >> v[i][1]; } for(int i = n - 1;i >= 0;--i){ int d = v[i][0], x = v[i][1]; dp[i] = 1; for(int j = 1;j < B;++j){ if(i + j < n)S[j][i] = (S[j][i + j] + dp[i + j]) % MOD; } if(d >= B){ for(int j = 1;j <= x && i + j * 1ll * d < n;++j){ dp[i] += dp[i + j * d]; dp[i] %= MOD; } } else{ int num = min(1ll * n, i + d * 1ll * x); dp[i] += (S[d][i] - S[d][num] + MOD) % MOD; } } cout << dp[0] << '\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...