diff --git a/src/11/18/P1545.cpp b/src/11/18/P1545.cpp new file mode 100644 index 0000000..0c4244a --- /dev/null +++ b/src/11/18/P1545.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include +#include +using ll = int64_t; +// #define printf +const ll inf=1e9+7; +ll n,l,a,b; +std::vector v,dp,diff; + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>n>>l>>a>>b; + v.resize(l+1);dp.resize(l+1,inf);diff.resize(l+2); + for(ll i=1;i<=n;i++){ + ll s,e; + std::cin>>s>>e; + v[s]++,v[e]--; + diff[e]++; + } + dp[0]=0; + for(ll i=1;i<=l;i++){ + v[i]+=v[i-1]; + for(ll j=a;j<=b&&i-j*2>=0;j++){ + if(!v[i-j*2] || diff[i-j*2]==v[i-j*2-1]){ + dp[i]=std::min(dp[i],dp[i-j*2]+1); + } + } + printf("now[%lld]=%lld\n",i,v[i]); + printf("dp[%lld]=%lld\n",i,dp[i]); + printf("diff[%lld]=%lld\n",i,diff[i]); + printf("\n"); + } + std::cout<