正题

题目链接:https://www.luogu.com.cn/problem/P3462


题目大意

nnn个容器容量不同,mmm个物品,对于一两个物品i,ji,ji,j,若wi≤wjw_i\leq w_jwi​≤wj​那么有wi∣wjw_i|w_jwi​∣wj​。
求能够放下的最多物品。


解题思路

显然就是一个进位的东西,我们设fif_ifi​表示第iii位能装下多少个(优先装大的先)

对于每个容器计算一个总的出fif_ifi​(不会影响整体)

然后我们将fif_ifi​往后面进位,不够就的补足知道满。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1e5+10;
ll n,m,v[N],a[N],k[N],s[N],c[N],r[N],ans,cnt;
int main()
{scanf("%lld%lld",&n,&m);for(ll i=1;i<=n;i++)scanf("%lld",&v[i]);for(ll i=1;i<=m;i++)scanf("%lld",&a[i]);sort(a+1,a+1+m);k[1]=s[1]=a[1];c[1]=cnt=1;for(ll i=2;i<=m;i++)if(a[i]!=a[i-1]) k[++cnt]=a[i]/a[i-1],s[cnt]=a[i],c[cnt]=1;else c[cnt]++;for(ll i=1;i<=n;i++)for(ll j=cnt;j>=1;j--)if(v[i]>=s[j])r[j]+=v[i]/s[j],v[i]%=s[j];ll l=cnt-1;for(ll i=cnt;i>=1;i--){ll w=r[i]*s[i];while(l>0){int use=max(min((c[l]-r[l])*s[l],w),0ll);w-=use;r[l]+=use/s[l];if(!w) break;l--;}r[i]=w/s[i];ans+=min(r[i],c[i]);}printf("%lld",ans);
}

P3462-[POI2007]ODW-Weights【贪心】相关推荐

  1. 算法——贪心算法解0-1背包问题

    问题的描述 我们先根据一个贪心算法的经典应用实例,然后给出贪心算法的实现步骤与关键环节,最后给出C++代码求解0-1背包问题. 背包问题(Knapsack Problem):有NN件物品有一个承重(也 ...

  2. bzoj 1106: [POI2007]立方体大作战tet(贪心+树状数组)

    1106: [POI2007]立方体大作战tet Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 785  Solved: 574 [Submit][ ...

  3. bzoj1110: [POI2007]砝码Odw

    神题 考虑到有倍数关系这个条件,所以可以运用进制的思想,比如当有3,9,18,54这些种类的砝码时,133的容量可以写成2*54+1*18+0*9+2*3+1,末尾的+1永远用不上,可以舍弃,那么各位 ...

  4. Weights and Measures(贪心+动态规划)

    I know, up on top you are seeing great sights, But down at the bottom, we, too, should have rights. ...

  5. 【UVA - 10154 】Weights and Measures (贪心排序,dp,类似0-1背包,状态设定思维)

    题干: The Problem Mack, in an effort to avoid being cracked, has enlisted your advice as to the order ...

  6. BZOJ1110 : [POI2007]砝码Odw

    砝码从小到大放最优,二分答案mid,转化为判定前mid小的砝码能否放完. 从大到小考虑砝码,依次扫描每个容器,能放就放. 由于砝码重量都成倍数关系,所以最多只有$O(\log n)$种不同的数字,所以 ...

  7. 野生前端的数据结构练习(12)贪心算法

    参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/GreedyAlogrithm 一.贪心算法 贪心算法属于比较简单的 ...

  8. nyoj--364--田忌赛马(贪心)

    田忌赛马 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 Here is a famous story in Chinese history. "That wa ...

  9. 背包问题 贪心算法 java_JS基于贪心算法解决背包问题

    前面我们分享了关于js使用贪心算法解决找零问题,本文我们接着为大家介绍JS基于贪心算法解决背包问题. 贪心算法:在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做 ...

  10. js贪心算法---背包问题

    /** @param {Object} capacity 背包容量 6* @param {Object} weights 物品重量 [2,3,4]* @param {Object} values 物品 ...

最新文章

  1. 【Android 电量优化】电量优化 ( 使用 AlarmManager 保持 CPU 唤醒 )
  2. 自定义ServicesLoader来实现根据配置使用不通的SPI实现从而实现项目扩展
  3. PDF文件上载图标,与启用浏览器浏览允许后依然无法在浏览器打开PDF文件的解决方案...
  4. 北京内推 | 地平线视觉算法团队招聘视觉算法实习生
  5. python小游戏——21点
  6. Soul网关源码阅读(七)限流插件初探
  7. iOS 应用启动慢的原因找到了!
  8. 【Oracle】DataGuard中 Switchover 主、备切换
  9. 【读书笔记】钢铁是怎么炼成的
  10. Flex和Flash之间相互调用
  11. matlab衰减指数的程序是,如何用MATLAB仿真单指数衰减振荡波
  12. java编程找异数,异类Outliers_又名异数Malcolm_Gladwell.pdf
  13. android cocos2dx pdf,(cocos2dx横幅)芒果广告AndroidSDK使用说明.pdf
  14. Squid 代理服务之反向代理服务器架构搭建
  15. 国外android内存清理工具,给大家推荐一个安卓清理神器哈,确实好用
  16. WSAIoctl 的SIO_GET_EXTENSION_FUNCTION_POINTER用法
  17. SQL Server2008r2安装
  18. 独立手机版营销推广落地页pbootcms模板落地页单页网站
  19. getenv、setenv函数
  20. 达梦数据库——限制IP以及网段连接数据库

热门文章

  1. 华为Mate30与大疆手机云台3_更便捷更从容,大疆DJI OM 4手机云台使用体验
  2. vim 寄存器 操作_vim指令
  3. oracle clob 查询换行,sqoop clob从Oracle导入到hive   回车换行导致记录增多
  4. python list remove 删除引用_Python——list列表操作一坑(remove)
  5. 网络被屏蔽了怎么办_预埋的网线不够长,怎么办?
  6. java swing 面试题_下面有关JAVA swing的描述,说法错误的是?
  7. C++分析使用拷贝控制成员和调用构造函数的时机
  8. 《C++ Primer》7.3.3节练习
  9. random(随机函数生成)
  10. sql 对groupby 后的数据limit_SQL(三)——汇总分析