제출 #1289493

#제출 시각아이디문제언어결과실행 시간메모리
1289493WH8Boat (APIO16_boat)C++20
0 / 100
222 ms5968 KiB
#include <bits/stdc++.h> using namespace std; #define int unsigned long long #define pll pair<int, int> #define mp make_pair #define pb push_back #define f first #define s second #define endl '\n' #define ld long double #define sz(x) static_cast<int>((x).size()) #define i5 tuple<int,int,int,int,int> const int mod=1e9+7, maxn=200005; vector<int> fac(maxn, 1); void init(){ for(int i=1;i<maxn;i++){ fac[i]=fac[i-1]*i%mod; } } int exp(int a, int b){ if(b==0)return 1; if(b==1)return a; int res=exp(a, b/2); return res * res %mod * (b%2==0?1:a)%mod; } int mod_inv(int a){ return exp(a, mod-2); } signed main(){ init(); int n;cin>>n; set<int> s; vector<int> a(n+1), b(n+1); for(int i=1;i<=n;i++){ cin>>a[i]>>b[i]; s.insert(a[i]); s.insert(b[i]); } vector<pair<int,int>> seg={{0,0}}; vector<int> temp; for(auto it:s)temp.pb(it); for(int i=0;i<sz(temp)-2;i++){ seg.pb({temp[i], temp[i+1]}); } seg.pb({temp[sz(temp)-2], temp[sz(temp)-1]+1}); vector<vector<int>> c(seg.size(), vector<int>(n+1, 0)); for(int i=0;i<sz(seg);i++){ int len=seg[i].s-seg[i].f, numer=1; for(int j=0;j<n+1;j++){ if(j > len)break; if(j>=1) numer = numer*(len-j+1)%mod; c[i][j]=mod_inv(fac[j])*numer%mod; } } for(int j=0;j<sz(seg);j++){ auto [a,b]=seg[j]; /*printf("segment %lld %lld ", a, b); for(int i=0;i<=n;i++){ cout<<c[j][i]<<" "; } cout<<endl;*/ } vector<vector<int>> dp(sz(seg), vector<int>(n+1, 0)); dp[0][0]=1; for(int k=1;k<sz(seg);k++){ for(int i=0;i<=n;i++){ int num=0; for(int j=0;j<=i;j++){ dp[k][i]=(dp[k][i]+(dp[k-1][i-j]*c[k][num])%mod)%mod; if(i-j >= 0 and a[i-j] <= seg[k].f and b[i-j] >= seg[k].s-1) num++; } //cout<<dp[k][i]<<" "; } //cout<<endl; } int ans=0; for(int j=0;j<=n;j++){ ans+=dp[sz(seg)-1][j]; } cout<<ans-1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...