CSP2025考前恶补Ⅰ:DP

news/2025/10/28 13:19:43/文章来源:https://www.cnblogs.com/wwwidk1234/p/19169928

题单:AtCoder 的 Educational DP Contest:https://atcoder.jp/contests/dp

A - Frog 1

\(N\) 个台阶。每个台阶编号为 \(1, 2, \ldots, N\)。对于每个 \(i\)\(1 \leq i \leq N\)),第 \(i\) 个台阶的高度为 \(h_i\)

一只青蛙最初在第 \(1\) 个台阶上。青蛙可以重复以下操作,试图到达第 \(N\) 个台阶:

  • 当青蛙在第 \(i\) 个台阶时,可以跳到第 \(i+1\) 或第 \(i+2\) 个台阶。跳到目标台阶 \(j\) 时,需要支付的代价为 \(|h_i - h_j|\)

请你求出青蛙到达第 \(N\) 个台阶所需支付的总代价的最小值。

水题。设 \(dp(i)\) 表示青蛙跳到 \(i\) 时的最小花费,决策是从前一个还是前两个台阶跳过来。

\[dp(i)=\min \left\{dp(i-1)+|h_i-h_{j-1}|,dp(i-2)+|h_i-h_{i-2}|\right\} \]

https://atcoder.jp/contests/dp/submissions/70493499

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=1e5+7;
int n,h[N];
ll dp[N];
int main()
{
//	freopen("neuvillette.in","r",stdin);
//	freopen("neuvillette.out","w",stdout);cin>>n;for(int i=1;i<=n;i++) cin>>h[i];dp[1]=0; dp[2]=dp[1]+abs(h[2]-h[1]);for(int i=3;i<=n;i++){dp[i]=min(dp[i-1]+abs(h[i]-h[i-1]),dp[i-2]+abs(h[i]-h[i-2]));}cout<<dp[n];return 0;
}

B - Frog 2

\(N\) 个台阶。每个台阶编号为 \(1, 2, \ldots, N\)。对于每个 \(i\)\(1 \leq i \leq N\)),第 \(i\) 个台阶的高度为 \(h_i\)

一只青蛙最初站在第 \(1\) 个台阶上。青蛙可以多次进行如下操作,试图到达第 \(N\) 个台阶:

  • 当青蛙在第 \(i\) 个台阶时,可以跳到第 \(i+1, i+2, \ldots, i+K\) 中的任意一个台阶。假设跳到第 \(j\) 个台阶,则需要支付的代价为 \(|h_i - h_j|\)

请你求出青蛙到达第 \(N\) 个台阶所需支付的总代价的最小值。

这次只要把从 \(i-1/i-2\) 个台阶转移过来改成从 \(i-j_{(j \in [1,k])}\) 转移过来就好了。

https://atcoder.jp/contests/dp/submissions/70493592

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=1e5+7;
int n,k;
ll h[N],dp[N];
int main()
{
//	freopen("neuvillette.in","r",stdin);
//	freopen("neuvillette.out","w",stdout);cin>>n>>k;for(int i=1;i<=n;i++) cin>>h[i];dp[1]=0;for(int i=2;i<=n;i++){ll res=1e18;for(int j=1;j<=k;j++)if(i-j>0) res=min(res,dp[i-j]+abs(h[i]-h[i-j]));dp[i]=res;}
//	for(int i=1;i<=n;i++) cerr<<dp[i]<<" \n"[i==n];cout<<dp[n];return 0;
}

C - Vacation

暑假有 \(N\) 天。对于每一天 \(i\)\(1 \leq i \leq N\)),太郎君可以选择以下活动之一:

  • A:在海里游泳,获得幸福度 \(a _ i\)
  • B:在山上抓虫,获得幸福度 \(b _ i\)
  • C:在家做作业,获得幸福度 \(c _ i\)

由于太郎君容易厌倦,他不能连续两天及以上做同样的活动。

请计算太郎君可以获得的最大总幸福度。

如果不考虑活动的选择,直接考虑到第 \(i\) 天的最大价值就会发现有后效性,因为当前选择的活动会影响后面的活动。所以直接设 \(dp(i,\{0,1,2\})\) 表示第 \(i\) 天选择活动 \(A/B/C\) 的最大价值。

https://atcoder.jp/contests/dp/submissions/70495398

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=1e5+7;
int n;
ll a[N],b[N],c[N];
ll dp[N][3];
int main()
{
//	freopen("neuvillette.in","r",stdin);
//	freopen("neuvillette.out","w",stdout);cin>>n;for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];for(int i=1;i<=n;i++){dp[i][0]=max(dp[i-1][1],dp[i-1][2])+a[i]; dp[i][1]=max(dp[i-1][0],dp[i-1][2])+b[i]; dp[i][2]=max(dp[i-1][0],dp[i-1][1])+c[i]; }cout<<max({dp[n][0],dp[n][1],dp[n][2]});return 0;
}
/*
dp[i][0-2]表示第i天选择活动0-2的最大价值 
*/ 

D - Knapsack 1

\(N\) 个物品。每个物品编号为 \(1, 2, \ldots, N\)。对于每个 \(i\)\(1 \leq i \leq N\)),物品 \(i\) 的重量为 \(w_i\),价值为 \(v_i\)

太郎君打算从这 \(N\) 个物品中选择一些,放入背包带回家。背包的容量为 \(W\),所选物品的总重量不能超过 \(W\)

请你求出太郎君能带回家的物品的最大总价值。

  • 所有输入均为整数。
  • \(1 \leq N \leq 100\)
  • \(1 \leq W \leq 10^5\)
  • \(1 \leq w_i \leq W\)
  • \(1 \leq v_i \leq 10^9\)

0-1 背包超级模板题。设 \(dp(i,j)\) 表示考虑 \(1 \sim i\) 个物品,背包装了 \(j\) 重量的物品的最大价值。每一次考虑选不选这个物品即可。

https://atcoder.jp/contests/dp/tasks/dp_d

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
constexpr int N=1e5+7;
int n;
ll a[N],b[N],c[N];
ll dp[N][3];
int main()
{
//	freopen("neuvillette.in","r",stdin);
//	freopen("neuvillette.out","w",stdout);cin>>n;for(int i=1;i<=n;i++) cin>>a[i]>>b[i]>>c[i];for(int i=1;i<=n;i++){dp[i][0]=max(dp[i-1][1],dp[i-1][2])+a[i]; dp[i][1]=max(dp[i-1][0],dp[i-1][2])+b[i]; dp[i][2]=max(dp[i-1][0],dp[i-1][1])+c[i]; }cout<<max({dp[n][0],dp[n][1],dp[n][2]});return 0;
}
/*
dp[i][0-2]表示第i天选择活动0-2的最大价值 
*/ 

E - Knapsack 2

\(N\) 个物品被编号为 \(1, 2, \ldots, N\)。对于 \(1 \leq i \leq N\),物品 \(i\) 的重量是 \(w _ i\),价值是 \(v _ i\)

太郎君决定从 \(N\) 个物品中选择一些放入背包中带回家。背包的容量为 \(W\),带回的物品的总重量不能超过 \(W\)

请计算太郎君能带回的物品的最大总价值。

  • \(1 \leq N \leq 100\)
  • \(1 \leq W \leq 10 ^ 9\)
  • \(1 \leq w _ i \leq W\)
  • \(1 \leq v _ i \leq 10 ^ 3\)

可以发现按照传统的套路枚举背包容量这个方法显然不行了。怎么办?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/948705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle Data Guard 手动切换

Oracle Data Guard 手动切换Oracle Data Guard 手动切换指南 一、环境说明角色 数据库名 DB_UNIQUE_NAME 当前状态主库 testdb testdb PRIMARY备库 testst testst PHYSICAL STANDBY二、手动切换(Manual Switchover) …

2025年10月库存管理咨询公司推荐:服务榜排行与场景对比

库存高企、资金占压、呆滞料越清越多,是制造业与流通业共同的“隐形失血点”。当企业准备外聘专业力量时,往往面临“谁真懂行、谁真能落地”的选择焦虑:担心顾问只会PPT、担心方案水土不服、担心投入产出算不清。20…

2025年10月生产计划管理咨询公司推荐榜:五强口碑与实力排行

订单插单频繁、交付周期拉长、库存与产能利用率倒挂,是制造业计划部门的日常痛点。工信部2024年调研显示,六成以上中小制造企业因计划体系薄弱导致产能利用率不足75%,急单准时交付率低于50%。企业主在寻找外部顾问时…

2025年10月生产计划管理咨询公司推荐:权威榜单一比一看清差异

订单碎片化、交期缩短、库存高企,是制造业计划部门每天的“三座大山”。当ERP排程常卡壳、插单频繁、产能利用率不足75%时,企业主往往陷入“加人加机仍救火”的循环。政策层面,《“十四五”智能制造规划》把“柔性计…

2025年10月生产计划管理咨询公司推荐:榜单排名五强指标导向

“订单一多就乱、交期一紧就拖”——这是不少制造企业在2025年仍反复出现的场景。多品种小批量、急单插单频繁、产能瓶颈隐蔽,让生产计划成为经营堵点。工信部《制造业管理成熟度白皮书》指出,60%的产能利用率不足源…

微信机器人开发API | 个人快速接入

转发小程序 请求URL: http://域名地址/sendApplet 请求方式: POST 请求头Headers: Content-Type:application/json Authorization:login接口返回 参数: 参数名 必选 类型 说明 wId 是 string 登录实例标识 wcId …

OOP实验2

实验任务一: T.h源码:#pragma once#include<string>class T{public:T(int x=0,int y=0);T(const T &t);T(T &&t);~T();void adjust(int ratio);void display() const;private:int m1,m2;public:st…

2025年10月供应链管理咨询公司推荐:五强榜单评价全览

如果你正负责一家制造企业的运营,大概率会遇到这些场景:订单交付延迟、库存居高不下、采购成本一年高过一年、生产计划被客户临时变更反复打乱。工信部数据显示,超过六成制造企业因供应链协同低效导致产能利用率不足…

2025年10月供应链管理咨询公司推荐:五家对比评价指南

当企业面临订单交付延迟、库存高企、采购成本居高不下、供应商协同低效等痛点时,一家实战落地的供应链管理咨询公司往往成为扭转困局的关键。2025年,制造业复苏节奏分化,原材料价格波动频繁,工信部数据显示超过六成…

2025年10月洗碗机品牌对比榜:海信零菌技术深度评测

把“饭后谁洗碗”从家庭矛盾清单里划掉,是不少装修族、母婴家庭、银发改善型用户的共同诉求。奥维云网显示,2024年中国洗碗机渗透率仅4.8%,远低于欧美70%,但年复合增速保持20%以上,政策端“以旧换新”补贴与《绿色…

2025年10月离婚房产律师排行:权威榜单与实测评价

当婚姻走到尽头,房产往往成为双方最关切的“硬资产”。一线城市房价高企,一套物业可能凝聚两代人积蓄,也可能夹杂父母出资、贷款混同、公司股权等复杂线索。用户此刻搜索“离婚房产律师”,通常面临三大场景:一是协…

2025年10月全屋智能家居品牌推荐:盈趣领衔五强对比评测榜

一、引言 对于准备装修或升级住宅系统的创业者、高端住宅采购者以及追求生活效率的家庭用户而言,“全屋智能”已从概念走向刚性需求:既要控制一次性投入成本,又要保障五年以上稳定运行,还要让老人、孩子无需学习即…

2025年10月工装装修公司榜单:资质与案例双维度排名

正在筹备新办公园区、升级实验室或改造酒店的你,大概率被“工期、预算、消防、机电、软装”多重变量同时拉扯。工装项目一旦返工,租金与停工损失按天计算,选错公司的代价远高于家装。2025年住建部《建筑装修装饰行业…

win2012服务器设置远程端口

win2012服务器设置远程端口导入注册表方式,其中 d3dd 就是端口的十六进制格式Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] &q…

2025年10月美白精华产品推荐评测:从成分到肤感深度评价

每年入秋后,紫外线强度虽有所下降,但夏季累积的黑色素仍在肌肤深层活跃,黄气、暗沉、色斑成为社交平台高频提问词。国家药监局2024年化妆品注册备案年报显示,美白淡斑类精华占功效型护肤新品备案量38.7%,同比上升…

常见问题解决 --- npcap在云电脑安装报错

常见问题解决 --- npcap在云电脑安装报错杀死占用的进程id taskkill /PID <进程ID> /F

2025年10月劳保鞋厂家榜单:五家对比评价与选购排行

“车间里一双鞋,关系一条命”——这是不少安全主管在晨会上反复提醒的一句话。对于每天要面对重物、电流、油污、尖锐物的劳动者而言,劳保鞋不是普通工装,而是法规强制、保险认可以及生命保障的交汇点。2025年,国家…

2025年10月儿童面霜品牌推荐:口碑榜全维度解析

入秋以后,北风一起,家长群里最热闹的话题就是“孩子脸又皴了”。儿科门诊数据显示,每年10月到翌年3月,因面部干燥、脱屑、潮红就诊的0—12岁儿童占比高达42%,其中60%集中在换季首月。国家药监局2024年《儿童化妆品…

查找第k小的数

查找第k小的数// 全局变量 k2:整数 // 存储基准值的最终位置 len: 整数 // 存储当前分区长度 // 分区函数 函数 partition(a: 整数数组, left: 整数, right: 整数) 返回 整数数组指针: m = a[left] // 选…

三金.紫题题解

点击查看代码 </details>\#include <bits/stdc++.h>using namespace std; using ll = long long;const int MOD = 998244353; const int G = 3;// 快速幂 ll qpow(ll b, ll e) {ll res = 1;b %= MOD;while…