Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
153002 | 吴悠 | 书架问题1 | C++ | 通过 | 100 | 3 MS | 772 KB | 583 | 2024-06-28 13:36:41 |
#include<iostream> #include<cstring> using namespace std; int w[100001],h[100001],dp[100001],sum[100001]; int main(){ int n,s; cin>>n>>s; for(int i=1;i<=n;i++){ cin>>w[i]>>h[i]; sum[i]=sum[i-1]+w[i]; } memset(dp,63,sizeof(dp)); dp[0]=0; for(int i=1;i<=n;i++){ int max_=0; for(int j=i;;j--){ if(sum[i]-sum[j-1]>s || j<1){ break; } max_=max(max_,h[j]); dp[i]=min(dp[i],dp[j-1]+max_); } } cout<<dp[n]<<endl; return 0; }