首页 > 其他分享 >CF294B 书架

CF294B 书架

时间:2023-08-23 21:23:37浏览次数:33  
标签:书架 int sum CF294B vector Shaass dp

Shaass拥有n本书。他想为他的所有书制作一个书架,并想让书架的长宽尽量小。
第i本书的厚度是t[i],且这本书的纸张宽度是w[i]。书的厚度是1或2,所有书都有同样的高度(即书架的高是均匀的)
Shaass以以下的方式摆放这些书籍。

  • 1.他选择了一些书并竖直摆放它们。
  • 2.他将剩余的书籍水平纺织于竖直的书上面。 水平放置的书的宽度和不能多于竖直放置的书的总厚度。

帮助Shaass找到可以达到的书架长度最小值。

1. 动态规划

dp[i]定义为取厚度和为i时最小宽度和

void maxval(int n,vector<int>&c,vector<int>&w){ 
    int sum = accumulate(c.begin(),c.end(),0);
    vector<int> dp(sum+1,sum);
    dp[0] = 0;
    for(int i=0;i<n;i++)
        for(int j=sum;j>=c[i];j--)
            dp[j] = min(dp[j],dp[j-c[i]]+w[i]);
    for(int j=sum;j>=0;j--)
        if(sum-j>=dp[j]){
            cout<<sum-j;
            return;
        }
    return;
}

标签:书架,int,sum,CF294B,vector,Shaass,dp
From: https://www.cnblogs.com/929code/p/17652800.html

相关文章

  • P2596 [ZJOI2006]书架 题解
    题目传送门:link。FHQ-Treap解题的关键在于如何来求出一本书上面有多少本书,但考虑到我们里面没有像权值一样的东西来让我们用按值分裂来完成这个操作,所以考虑用按排名分裂来实现。我们按照先后顺序把所有的书都给插入到平衡树里面,根据二叉搜索树的性质,当前结点的所有左子树的结......
  • P2596 [ZJOI2006]书架
    \(\color{purple}\text{P2596[ZJOI2006]书架}\)解题方法考虑使用\(\text{FHQ}\)平衡树,我们只使用编号,而不使用权值,平衡树上的先序遍历即为书的放置顺序。\(\text{Query}\):这是最简单的操作,直接查询即可。\(\text{Ask}\):本题的核心,我们知道编号,因为没有权值,没法从根往下......
  • 超级书架2 计蒜客 - T1736(01背包应用,好题)
    题意:FarmerJohn最近为奶牛们的图书馆添置了一个巨大的书架,尽管它是如此的大,但它还是几乎瞬间就被各种各样的书塞满了。现在,只有书架的顶上还留有一点空间。所有N(1≤N≤......
  • 基于halo搭建的满心书架
    基于html写的静态书架,没有后台,所有书籍的图片和链接都有自己手动添加,感兴趣的小伙伴可以去试试体验地址预览效果:使用​​halo​​​创建页面,单独嵌入​​html​​,预览效果如......