蓝书(算法竞赛进阶指南)刷题记录——POJ1742 Coins(DP+贪心)

贪心算法训练(七)——加工生产调度(流水作业调度问题) 贪心算法训练(七)——加工生产调度(流水作业调度问题) 1. 问题描述   某工厂收到了 n 个产品的订单,这 n 个产品分别在 A、B 两个车间加工,并且必须先在 A 车间加工后才可以送到 B 车间。某个产品 i 在 A、B 两车间加工的时间分别为 $A_i$、$B_i$。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短?这里所说的加工... 阅读详情

题目:POJ1742.
题目大意:给定 n n n种物品,物品 i i i价值为 A i A_i Ai​,数量为 C i C_i Ci​,问 1   m 1~m 1 m之间多少种面值能被凑出来.
1 ≤ n ≤ 100 , 1 ≤ m , A i ≤ 1 0 5 , 1 ≤ C i ≤ 1 0 3 1\leq n\leq 100,1\leq m,A_i\leq 10^5,1\leq C_i\leq 10^3 1≤n≤100,1≤m,Ai​≤105,1≤Ci​≤103.

一道多重背包的模板,当然可以用二进制拆分或者单调队列优化做,但是感觉这样做很麻烦.

考虑这个问题的特殊性,发现它只是要求可行性,我们是否可以从这里入手优化呢?

若当前正在枚举第 i i i种物品, f [ j ] f[j] f[j]表示价值 j j j是否能够被拼凑出来,容易发现前面 i − 1 i-1 i−1种物品造成的影响已经没用了,我们只需要考虑当前第 i i i种物品造成的影响即可.

贪心的想,容易发现如果 j j j的价值可以只通过 k k k枚第 i i i种物品凑出来,我们肯定不考虑比 k k k枚更多的硬币,所以考虑记录一下使 f [ j ] = 1 f[j]=1 f[j]=1最少需要物品 i i i的数量 u s e [ j ] use[j] use[j].每次枚举到第 i i i种物品的时候先把 u s e use use数组初始化为 0 0 0,转移的时候若发现 f [ j ] = 1 f[j]=1 f[j]=1或 f [ j − a [ i ] ] = 0 f[j-a[i]]=0 f[j−a[i]]=0或 u s e [ j − a [ i ] ] > = c [ i ] use[j-a[i]]>=c[i] use[j−a[i]]>=c[i]时就不管了,否则就让 f [ j ] = 1 , u s e [ j ] = u s e [ j − a [ i ] ] + 1 f[j]=1,use[j]=use[j-a[i]]+1 f[j]=1,use[j]=use[j−a[i]]+1.

时间复杂度 O ( n m ) O(nm) O(nm).

代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
  using namespace std;

#define Abigail inline void
typedef long long LL;

const int N=100,M=100000;

int n,m,a[N+9],c[N+9];
int dp[M+9],use[M+9],ans;

Abigail into(){
  for (int i=1;i<=n;++i)
    scanf("%d",&a[i]);
  for (int i=1;i<=n;++i)
    scanf("%d",&c[i]); 
}

Abigail work(){
  for (int i=1;i<=m;++i) dp[i]=0;
  dp[0]=1;
  for (int i=1;i<=n;++i){
    for (int j=0;j<=m;++j) use[j]=0;
    for (int j=a[i];j<=m;++j)
      if (!dp[j]&&dp[j-a[i]]&&use[j-a[i]]<c[i]) dp[j]=1,use[j]=use[j-a[i]]+1;
  }
  ans=0;
  for (int i=1;i<=m;++i) ans+=dp[i];
}

Abigail outo(){
  printf("%d\n",ans);
}

int main(){
  while (~scanf("%d%d",&n,&m)&&n+m){
    into();
    work();
    outo();
  }
  return 0;
}
ACM 算法竞赛 八大基础算法 模拟法 字符串 递归分治 排序 枚举 贪心 递推 八大基础算法思想的总结 阅读详情

相关推荐

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录

东方马达步进电机AZM66AK-HS100+AZD-KD调试经验记录(20170803YC) 本次总结主要实现的功能如下:用MEXE02软件在步进电机驱动器中设置好控制动作,每个控制动作有一个特定的编号。之后通过PC和驱动器之间的485通讯,发送相关指令,使步进电机按照一定编号的控制动作运转。 参考资料:东方马达步进电机AZM66AK-HS100+AZD-KD的产品手册,可在官网下载。 A....

dahailuoa6的博客 1万+

POJ - 1742 Coins(DP+贪心)

HDU - 2844 Coins POJ - 1742 Coins 算法(贪心+动态规划) 时间复杂度O(N∗M) #include<cstdio> #include<cstring> using namespace std; const int N = 110, M = 100010; int n,m; int f[M],g[M]; int v[N],s[N]; int main() { while(scanf("%d%d",&n,&m)&&

00后的博客 196

汇丰外包Java岗面试复盘:Zoom面1.5小时,从英语、粤语到现场敲代码的极限挑战

本文详细记录了汇丰银行外包Java岗位的面试全过程,包括多语言切换(英语、粤语)的技术沟通挑战和现场编码测试的实战经验。从高并发编程到JVM调优,面试不仅考察技术深度,更注重实战问题解决能力。文章分享了应对跨国银行技术面试的实用策略,帮助Java开发者在跨文化环境中提升竞争力。

weixin_42524824的博客 361

蓝书(算法竞赛进阶指南)学习笔记

算法竞赛进阶指南——笔记 0X00 - 0x01位运算 知识: 位移(左移右移)快速幂 快速乘等等 二进制压缩 (隐隐约约指向 状压DP )基操 取数 位运算特点 二进制下不进位利用这特点可以我们可以做题 小技巧(应用邻接表 我不用) n为偶数时 n ^ 1 = n + 1; n为基数时 n ^ 1 = n - 1; lowbit 运算 最低位的1与之后的0 广泛应用于各地 例题 CH0101/Acwing(vjudge) 求a^b的次方mod p数据范围为1e9/1e18 我们已知所有

lan_m的博客 2338

RK平台MPP编解码实战:从源码编译到性能测试全解析

本文详细解析了在RK(瑞芯微)平台上进行MPP(Media Process Platform)多媒体编解码实战的全过程。从源码获取、交叉编译环境搭建、常见编译问题排查,到测试程序的修改调试与性能测试分析,提供了从零到一的完整指南。文章通过实测数据展示了MPP硬件编解码在嵌入式设备上的高性能与低功耗优势,帮助开发者快速掌握这一关键技术,应用于智能摄像头、视频会议终端等产品开发。

weixin_28273593的博客 542

网工实验笔记:SNMP的配置

简单网络管理协议SNMP(Simple Network Management Protocol)是广泛应用于TCP/IP网络的网络管理标准协议。SNMP提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

2301_76170756的博客 2114

【贪心算法】贪心算法30题

【贪心算法】贪心算法30题

52Herzt的博客 3664

打造你自己的小程序容器 —— 一套能装得下整个未来的跨端技术!

摘要: 本文介绍了一种基于Capacitor框架开发的轻量级“小程序容器”解决方案——LapDrop。通过模拟微信小程序的运行逻辑(动态加载、原生能力调用、沙盒环境),LapDrop允许开发者自主构建跨平台(iOS/Android/Web)的小程序生态。其核心利用Capacitor的插件桥接机制,实现JS与原生功能的无缝调用,并支持浏览器调试与原生环境一致化。优势包括插件化架构、状态隔离、热更新及开放权限控制,适用于企业级模块化应用或开发者工具。未来计划扩展生命周期管理、远程加载等功能,目标成为开源的小程序

CangYuChenAi的博客 973

《算法竞赛进阶指南》蓝书重做记录

重新复习蓝书(基础算法,数论,DP和图论),争取 \(1.5\) 个月内完成,期间会不定期更新 此次记录,过往的题也会重新编写题解并收录 补题链接:Here Initialize02学长的学习笔记 0x00 基本算法 0x01 位运算 A题:a^b https://ac.nowcoder.com/acm/contest/996/A 题目描述 求 a 的 b 次方对 p 取模的值,其中 0 &...

橘嘉禾 195

KV260-从开箱到人脸识别(小白入门)

波特率选择115200,数据为8位,停止位1位,无奇偶校验,点击链接即可完成通讯。空白的盘格式化之后及进行挂载,这时会被我们的操作系统接手管理,这时就具有了操作系统的属性,复制文件就是在操作系统下的文件系统基础上进行的操作,这个过程是相对的地址进行操作,因此,复制文件是在操作系统环境下完成的更高级的操作模式。空白的盘相当于一整块空白的存储单元,因为没有格式化也不具有文件系统的属性,只有当外部的硬件或者软件写进空白的区域,这种方式是对绝对物理地址进行的操作,因此,烧录文件是独立于操作系统的更低级的写入方式。

qq_53252845的博客 3814

大数据领域存算分离:教育行业的数据应用探索

在当今数字化时代,教育行业积累了海量的数据,如学生的学习记录、考试成绩、在线学习行为等。如何高效地存储、管理和分析这些数据,以挖掘其潜在价值,为教育决策、教学改进和学生个性化发展提供支持,成为教育行业面临的重要挑战。大数据领域的存算分离技术为解决这一问题提供了新的思路和方法。本文旨在探索存算分离技术在教育行业的数据应用,分析其原理、优势和实际应用场景,为教育行业的数据管理和分析提供参考。本文共分为十个部分。第一部分介绍背景,包括目的和范围、预期读者、文档结构概述和术语表;

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 812

算法竞赛入门经典训练指南(蓝书)Ping pong(UVaLive4329)树状数组

题意 在一个序列中,存在三个数为升序摆放或降序摆放,则这三个数可以视作能够举行比赛。问比赛的种数。 ps.升序或降序表示两个运动员之间的人中有人可以充当裁判,同时两个运动员愿意去裁判家中比赛。 思路 若 a1a_1a1​ 到 ai−1a_{i-1}ai−1​ 有 bib_ibi​ 个数比 aia_iai​ 小,那么就有 i−1−bii-1-b_ii−1−bi​ 个数比 aia_iai​ 大。所以我们可以记录 aia_iai​ 左边比 aia_iai​ 小的数与 aia_iai​ 右边比 aia_iai​ 小

CofDoria的博客 462

目标检测: yolo26在RK3588上部署

YOLO26发布:端到端目标检测新突破 摘要:Ultralytics最新发布的YOLO26算法采用原生端到端设计,无需NMS后处理,显著提升推理效率。该模型基于三大核心原则: 简洁性:消除NMS步骤,实现直接预测 部署效率:简化集成流程,降低延迟 训练创新:引入MuSGD混合优化器,加速收敛 部署教程显示,YOLO26可适配RK3588等边缘设备,通过ONNX转换和RKNN工具链实现高效部署。其创新架构特别优化了分割、姿态估计等专业任务,标志着目标检测技术的重要革新。 (字数:149)

qianxun 1442

蓝书(算法竞赛进阶指南)刷题记录——hdu4348 To the moon(主席树)

题目大意:给定一个长度为nnn的序列,要求支持以下操作mmm次: 1.格式C&ThinSpace;l&ThinSpace;r&ThinSpace;dC\,l\,r\,dClrd,表示给区间[l,r][l,r][l,r]加上ddd并给时刻ttt加111. 2.格式Q&ThinSpace;l&ThinSpace;rQ\,l\,rQlr,表示查询当前区间[l,r]...

hzk_cpp的博客 308

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝书(算法竞赛进阶指南)刷题记录——BZOJ2351 Matrix(hash)

题目:BZOJ2351. 题目大意:给定一个NM的大01矩阵,以及Q个AB的小01矩阵,问有每个小矩阵是否在大矩阵中出现. 看到这道题我们就会想到考虑这个问题在一维情况下的做法,直接什么AC自动机,什么KMP之类的算法都可以解决. 但是考虑在二维情况下怎么办?二维AC自动机 矩阵hash! 我们考虑字符串hash是把一个字符串看成一个P进制数,那么矩阵hash呢?考虑先把矩阵的每一行看成一个P1进...

hzk_cpp的博客 504

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝书(算法竞赛进阶指南)刷题记录——POJ3076 Sudoku(dfs+剪枝)

题目:POJ3076. 题目大意:给定一个16∗1616*1616∗16的数独,要求填完这个数独. 首先考虑给每一个空格记录一个161616为二进制数表示这个空格可以填哪些数,第iii位为000表示第iii个字符未填. 然后我们就可以大力dfs了.不过可以先填当前可能性最少的空格,从而达到优化的效果. 发现还是不够快,继续考虑优化. 考虑对于每个空格,当这个空格A..PA..PA..P均不能填时,...

hzk_cpp的博客 525

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

贪心算法(贪婪算法)

贪心算法介绍 1)贪婪算法(贪心算法)是指在对问题进行求解时,在每-步选择中都采取最好或 者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法 2)贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果 思路分析: 使用贪婪算法,效率高: 目前并没有算法可以快速计算得到准备的值,使用贪婪算法,则可以得到非常接近的解,并且效率高。选择策略上,因为需要覆盖全部地区的最小集合: 1)遍历所有的广播电台,找到一个覆盖了最多未覆盖的地区的电台(此电台可能包含一些

Azadoo的博客 4322

蓝书(算法竞赛进阶指南)刷题记录——POJ2176 Folding(区间DP)

题目:POJ2176. 题目大意:给定一个串sss,求它压缩后长度最小的串.其中压缩是指把一个串中某些子串压成“出现次数(循环节)”的形式,如串ABABABABABABABABAB可以压成3(AB)3(AB)3(AB). 1≤∣S∣≤3001\leq |S|\leq 3001≤∣S∣≤300. 容易发现[l,r][l,r][l,r]要么通过子区间[l,mid][l,mid][l,mid]和[mid...

hzk_cpp的博客 325

(省赛训练系列)贪心的说 poj贪心经典题目

Crossing River Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1700 Appoint description:  System Crawler  (2015-03-31) Descript

一只叫做Unix的猫 2891

NYOJ - 891 - 找点(区间相关问题---区间选点-贪心算法)

描述 上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗? 输入多组测试数据。 每组数据先输入一个N,表示有N个闭区间(N≤100)。 接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两个端点。 输出输出一个整数,表示最少需要找几个点。 样例输入 4 1 5 2 4 1 4

i逆天耗子 1008

ACM 算法竞赛总结及模板 ------ (网络流)

ISAP: 是基于分层思想的最大流算法,所不同的是,它省去了渐进时间复杂度和Dinic相同,但是非二分图的情况下isap更具优势。 理想情况下可达到 O(V^2*sqrt(E))------玄学 (优先使用ISAP算法) Poj -1273 Drainage Ditches (网络流-ISAP) (模板) Dinic: 在EK算法的基础上增加了分层图的概念,根据从s到各个点的最短距离的...

Fushicho_XF的博客 962

蓝书(算法竞赛进阶指南)刷题记录——POJ2449 Remmarguts‘ Date(A*求解K短路)

题目:POJ2449. 题目大意:给定一张nnn个点mmm条边的有向图,求sss到ttt的第kkk短路. 1≤n,k≤103,1≤m≤1051\leq n,k\leq 10^3,1\leq m\leq 10^51≤n,k≤103,1≤m≤105. 首先考虑直接从堆优化dijkstra拓展,容易发现堆中第kkk个弹出的到点xxx的路径长度一定是到点xxx的kkk短路,所以我们可以在每次加入元素是不取...

hzk_cpp的博客 254

ACM算法竞赛预处理模版

本文旨在提供ACM算法竞赛的一些头文件和预处理模版, 也请大家留言添加 #include &amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt; #define mem(ar,num) memset(ar,num,sizeof(ar)) #define me(ar) memset(ar,0,sizeof(ar)) #define lowbit(x) (x&amp;amp;amp;amp;(-x)) using namespac

海边拾贝,沧海一粟 1185

点集配对问题 蓝书dp

题目大意 给定空间中的n个点把他们配对成n/2个点对,使得所有点对的距离之和最小;n<20 分析 应为n比较小,我们可以采取状压dp用二进制保存集合. 设 d(s)为集合s配对后的最小距离 转移方程为: d(s)=min{d(s-i-j)+dist(i,j)|i,j属于S集合} 核心代码为 d[0] = 0; for (int i = 0; i < n; i++) for (i...

tccsx_o的博客 285

蓝书(算法竞赛进阶指南)刷题记录——POJ1733 Parity game(并查集)

题目:POJ1733. 题目大意:给定nnn个区间[li,ri][l_i,r_i][li​,ri​]和aia_iai​,表示[li,ri][l_i,r_i][li​,ri​]的权值和为奇数或偶数,问到哪一个区间不矛盾,但它的下一个区间矛盾. 1≤n≤5∗1031\leq n\leq 5*10^31≤n≤5∗103. 容易想到前缀和,那么区间就变成了两个点li−1l_i-1li​−1和rir_iri...

hzk_cpp的博客 497

腾讯笔试-贪心算法

小Q在进行一场竞技游戏,这场游戏的胜负关键就在于能否能争夺一条长度为L的河道,即可以看作是[0,L]的一条数轴。 这款竞技游戏当中有n个可以提供视野的道具−真视守卫,第i个真视守卫能够覆盖区间[xi,yi]。现在小Q想知道至少用几个真视守卫就可以覆盖整段河道。 输入包括n+1行。 第一行包括两个正整数n和L(1<=n<=105,1<=L<=109) 接下来的n行,每行两个正...

weixin_43838915的博客 363
上一篇: 蓝书(算法竞赛进阶指南)刷题记录——CH5105 Cookies(贪心+DP)
下一篇: BZOJ3585 & 洛谷4137 mex 题解(卡掉暴力莫队+主席树)
hezlik
博客等级 码龄9年 111粉丝 241原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值