제출 #1148503

#제출 시각아이디문제언어결과실행 시간메모리
1148503tianyaochiunTrains (BOI24_trains)C++20
100 / 100
517 ms319820 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #define ll long long #define pii pair<int,int> #define piii pair<pii,int> #define F first #define S second #define pb push_back #define eb emplace_back #define endl "\n" #define all(a) a.begin(),a.end() #define int long long const int mod=1e9+7,C=400; void solve(){ int n,ans=0; cin>>n; vector<int> d(n),x(n),dp(n); vector<vector<int>> add(n,vector<int>(C+1)); dp[0]=1; for(int i=0;i<n;i++){ cin>>d[i]>>x[i]; for(int j=1;j<=C;j++){ (dp[i]+=add[i][j])%=mod; if(i+j<n) (add[i+j][j]+=add[i][j])%=mod; } (ans+=dp[i])%=mod; if(i+d[i]>=n||x[i]==0||d[i]==0) continue; if(d[i]<=C){ (add[i+d[i]][d[i]]+=dp[i])%=mod; if(i+d[i]*(x[i]+1)<n) (add[i+d[i]*(x[i]+1)][d[i]]+=mod-dp[i])%=mod; } else{ for(int j=i+d[i];j<=min(n-1,i+d[i]*x[i]);j+=d[i]) (dp[j]+=dp[i])%=mod; } } cout<<ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); int 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...