洛谷试炼场 普及组 动态规划的背包问题

article/2025/6/29 3:23:42

相关视频:洛谷试炼场 普及组 动态规划的背包问题

P1048 [NOIP2005 普及组] 采药

T就是背包的体积,M就是物品的数量,c[i]就是物品的体积,v[i] 就是物品的价值。

AC代码

#include<bits/stdc++.h>
using namespace std;
int T,M,c[105],v[105],dp[1005];
int  main()
{cin >> T >> M;for(int i=1;i<=M;i++)cin >> c[i] >> v[i];for(int i=1;i<=M;i++)for(int j=T;j>=c[i];j--)dp[j] = max( dp[j], dp[j-c[i]] + v[i]);cout << dp[T];return 0;
}

P1060 [NOIP2006 普及组] 开心的金明

 这里物品的价值变成了价格与重要度乘积之和,所以需要更新一下

AC代码

#include<bits/stdc++.h>
using namespace std;
int N,M,c[30],v[30],dp[30005];
int  main()
{cin >> N >> M;for(int i=1;i<=M;i++){cin >> c[i] >> v[i];v[i]=c[i]*v[i];}for(int i=1;i<=M;i++)for(int j=N ; j>=c[i];j--)dp[j] = max( dp[j], dp[j-c[i]] + v[i]);cout << dp[N];return 0;
}

P1049 [NOIP2001 普及组] 装箱问题

 没有体积,只有价值,此题物品的价值与体积一样

AC代码

#include<bits/stdc++.h>
using namespace std;
int N,M,c[35],v[35],dp[20005];
int  main()
{cin >> M >> N;for(int i=1;i<=N;i++){cin >> c[i];v[i]=c[i];}for(int i=1;i<=N;i++)for(int j=M ; j>=c[i];j--)dp[j] = max( dp[j], dp[j-c[i]] + v[i]);cout << M-dp[M];return 0;
}

P1164 小A点菜

 此题同上题一样,物品的价值与体积一样,但此问题问的是有多少种方法?在初始状态下有不选这种方法,所以初始化时初始化为1,在核心代码那里只需累加每次方法即可。

此题和上题都是可以优化的,但我都没有优化,方便记忆模板,后续做此类01背包题都是直接套用模板。

AC代码

#include<bits/stdc++.h>
using namespace std;
int M,N,c[105],v[105],dp[10005]={1};
int  main()
{cin >> N >> M;for(int i=1;i<=N;i++){cin >> c[i];v[i]=c[i];}for(int i=1;i<=N;i++)for(int j=M ; j>=c[i];j--)dp[j] += dp[j-c[i]];cout << dp[M];return 0;
}

P1734 最大约数和

 这个题一眼看下不像01背包,深入一下,把他给的样例手写一下,就知道这是个01背包了,背包体积为S,背包数量也为S,物品体积就为1至S,物品价值就为这个物品的约数之和。

AC代码

#include<bits/stdc++.h>
using namespace std;
int N,M,c[1005],v[1005],dp[1005];
int  main()
{cin >> N;M=N;for(int i=1;i<N;i++){c[i]=i;for(int j=1;j<i;j++)if(i%j==0)v[i]+=j;	}for(int i=1;i<=N;i++)for(int j=M ; j>=c[i];j--)dp[j] = max(dp[j],dp[j-c[i]]+v[i]);cout << dp[M];return 0;
}


http://chatgpt.dhexx.cn/article/ETQwKDOg.shtml

相关文章

【OJ】洛谷试炼场の新手村整合(Java语言描述)

Pass 最近通关了洛谷试炼场新手村Part&#xff0c;做了很多的红题和橙题&#xff0c;这里做一下整理吧&#xff0c;希望对需要的人有所帮助。 说明 这些内容确实不是什么复杂的东西&#xff0c;所以无需多言。 洛谷的第一个任务 这里是我写的所有题解&#xff08;Java&…

洛谷试炼场---新手村

洛谷试炼场---新手村 在线测评地址https://www.luogu.com.cn/training/mainpage 洛谷的第一个任务 1.p1001 AB Problem 难度&#xff1a;入门难度 考点&#xff1a;输入&#xff0c;输出 ,整数四则运算 适用&#xff1a;小学生 #include <stdio.h> int main(){int …

洛谷试练场入门之“洛谷的第一个任务”讲解

话说&#xff0c;其实我主要在洛谷上做题 www.luogu.org 有些萌新若想在洛谷提升自己的实力&#xff0c;先看试炼场 因为吧&#xff0c;我个人觉得试炼场是适合一点一点来 那么这是试炼场的截图 分五个阶段&#xff1a; 1.入门 2.普及 3.提高 4.省选 5.USACO 以我的实力&#…

6.20 C语言练习(找出1至99之间的全部同构数。同构数是这样的一组数:它出现在平方数的右边。)

【练习】 题目要求&#xff1a;试编程序&#xff0c;找出1至99之间的全部同构数。同构数是这样的一组数:它出现在平方数的右边。如5是25右边的数&#xff0c;25是625右边的数&#xff0c;5和25均是同构数。例如&#xff1a;输出&#xff1a;1 5 6 25 76#include <stdio.h&g…

Python识别同构数

题目描述&#xff1a; 1.程序功能&#xff1a; 随机输入若干个不超过2位的正整数&#xff08;输入-1表示输入结束&#xff09;&#xff0c;找出其中所有同构数并排序输出。&#xff08;正整数n若是它平方数的尾部&#xff0c;则称n为同构数。如5的平方数是25&#xff0c;且5是…

c语言输入一个数判断是否是同构数,c语言:编写函数判断x是否同构数

c语言:编写函数判断x是否同构数 mip版 关注:271 答案:4 悬赏:30 解决时间 2021-01-19 03:42 已解决 2021-01-18 15:16 例如5是同构数,因为5是25右边的数,在主函数中调用该函数打印输出1到100间的同构数 下面是我编的程序,结果应该是1,5,6,25,76,可是却多了几个不对…

同构数-c语言入门(5)

找出2~999之间所有的的同构数 首先解释一下同构数&#xff0c;同构数是指自己本身与自己的平方右侧的数一样。例如6的平方36&#xff0c;6和36的最右侧一位6一样&#xff0c;所以6是同构数&#xff1b;再例如25的平方625&#xff0c;25与625的右侧25一样&#xff0c;所以25也是…

C++同构数计算

题目: 编写程序&#xff0c;找出1-99之间的全部同构数。同构数是这样一组数&#xff1a;它出现在平方数的右边。例如&#xff1a;5是25的右边的数&#xff0c;25是625右边的数&#xff0c;5和25都是同构数。 题目分析: 题目要找出1-99之间的全部同构数&#xff0c;首先要想到的…

同构数(c语言)

【问题描述】 具有下面性质的数a称为"同构数"&#xff1a;设b是a的平方&#xff0c;a与b的低若干位相同。 例如&#xff0c;5是25的同构数&#xff0c;25是625的同构数编程序满足如下要求&#xff1a;输入两个整数a&#xff0c;b&#xff08;0<a&#xff0c;b<…

python求同构数

找出1与100之间的全部“同构数”。“同构数”是这样一个数&#xff0c;它出现在它的平方数的右端。例如&#xff0c;5的平方是25&#xff0c;5是25右端的数&#xff0c;5就是同构数&#xff0c;25也是一个同构数&#xff0c;它的平方是625。 代码如下&#xff1a; for i in ran…

C语言 同构数的算法

“同构数”是指这样的整数&#xff1a;它恰好出现在其平方数的右端。 如&#xff1a;376*376141376。请输出10000以内的全部“同构数”。 算法分析&#xff1a; 1.求出1-10000之间每个数的位数&#xff08;即这个数是几位数&#xff09;。设这个数是i. //用for循环实现&#x…

第三方token过期监控及刷新机制

背景 信息系统随着业务发展的多样化及场景的拓展&#xff0c;需要接入越来越多的第三方系统&#xff0c;部分收费的第三方服务都会按照合同约定给用户提供对应的应用授权账户&#xff0c;授权账户包含并不仅限于账号/密码/AppKey/AppSecret/MerchantId&#xff0c;但是从系统安…

vue token过期后自动刷新token

在系统登录后&#xff0c;后端返回一个token&#xff0c;和refreshToken。每次接口请求的时候都会携带这个token&#xff0c;但是这个token一般是有过期时间的&#xff0c;假设过期时间为半小时&#xff0c;你半小时内没有调接口。半小时后你再调接口&#xff0c;会报401错误&a…

JAVA开发(token过期续期)

一、需求背景&#xff1a; 在使用token进行登录的过程中&#xff0c;如果token过期了&#xff0c;需要重新输入用户名和密码登录&#xff0c;这种体验肯定是不好的&#xff0c;因为如果一直在使用系统&#xff0c;系统应该一直能够保持登录状态&#xff0c;而不是用着用着就突然…

token系统讲解及过期处理

token系统讲解及过期处理 1. token是什么&#xff1f;用来做什么2. token存储在哪&#xff1f;过期了怎么办&#xff1f;3. 请求拦截与响应拦截执行时机&#xff08;面试重点&#xff09;4. 解决token过期方案一&#xff1a; 重新登录5. 方案二&#xff1a;使用 refresh_token…

前端token知识梳理:token如何存储?token过期如何处理?如何无感知刷新token?

在前后端是以token&#xff08;令牌&#xff09;的形式交互的&#xff0c;既然是token&#xff0c;是有过期时间的&#xff08;为了接口数据的安全&#xff0c; 服务器的token不会设置太久&#xff0c;根据需要一般是1-7天&#xff09;&#xff0c;没有一个token是永久的&…

处理token过期的问题,无感知刷新token

401错误的场景 有如下两种情况会出现401错误&#xff1a; 未登陆用户做一些需要权限才能做的操作&#xff0c;代码会报出401错误。这种情况下&#xff0c;应该让用户回到登陆页。登录用户的token过期了 整体目标是&#xff1a;通过axios响应拦截器来处理401问题。 理解toke…

前端怎么判断token过期或无token问题

有如下两种情况会出现401错误&#xff1a; 未登陆用户做一些需要权限才能做的操作&#xff08;例如&#xff1a;关注作者&#xff09;&#xff0c;代码会报出401错误。这种情况下&#xff0c;应该让用户回到登陆页。登录用户的token过期了 ( token会有有效期&#xff08;具体是…

react中 token过期,如何处理?

思路&#xff1a;首先在request.js中的响应拦截器这块写token失效的提示&#xff0c;然后再让它进行清空token和路由跳转 第一步&#xff1a;在request.js文件中 导入 import store from /store import { logout } from /store/actions/login 第二步&#xff1a;在响应拦截器…

token 过期解决

vue如何在token过期之后跳转到登录页面&#xff0c;且不影响其他无需携带token的接口数据访问 事情是这样的&#xff0c;最近做了一个类似于商城的项目。本来测试是没有问题的&#xff0c;后来过了大概三四天的时间没有在浏览器中打开过&#xff0c;再打开以后&#xff0c;在未…