当前位置: 首页 > news >正文

2024.6.15

2024.6.15 【夜幽幽,月优优,曲悠悠,吾忧忧。】

Saturday 五月初十


<theme = oi-“DP”>

看几道DP基础题,

巩固一下DP思路和基础

Coin Combinations I

//2024.6.15
//by white_ice
//Coin Combinations I CSES - 1635 
#include<bits/stdc++.h>
#include"fopen.cpp"
using namespace std;
#define itn long long 
#define int long long 
constexpr int oo = 102;
constexpr int mod = 1000000007;
constexpr int op = 1000006;int n,m;
itn st[oo];itn f[op];signed main(){fre();ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n >> m ;for (itn i=1;i<=n;i++)cin >> st[i];f[0] = 1;for (itn i=1;i<=m;i++){for (itn j=1;j<=n;j++){if (i-st[j]>=0){f[i] += f[i-st[j]];}} f[i] %= mod;}cout << f[m];return 0;
}

依次遍历每一个总价值i如果比硬币价值大,

就加上f[i-c[j]]种方式

Coin Combinations II

//2024.6.15
//by white_ice
//Coin Combinations II CSES - 1636
#include<bits/stdc++.h>
//#include"fopen.cpp"
using namespace std;
#define itn int
constexpr int oo = 102;
constexpr int op = 1000006;
constexpr int mod = 1000000007;itn n,x;
itn st[oo];itn f[op];signed main(){//fre();ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin >> n >> x;for (itn i=1;i<=n;i++)cin >> st[i];f[0] = 1;for (itn i=1;i<=n;i++){for (int j=st[i];j<=x;j++){f[j] += f[j-st[i]];f[j] %= mod;}}cout << f[x];return 0;
}

从枚举每个硬币的价值开始,

加上从此硬币能到的总价值中差的价值的组成方式

(有点绕

注意以上两种题的区别,

有序和无序的DP写法中主要就是遍历顺序的改变

Minimizing Coins

//2024.6.15
//by white_ice
//Minimizing Coins CSES - 1634
#include<bits/stdc++.h>
//#include"fopen.cpp"
using namespace std;
#define itn int
constexpr int oo = 102;
constexpr int op = 1000006;itn n,m;
itn c[oo];  int f[op];signed main(){//fre();ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin >> n >> m;memset(f,0x3f3f3f3f,sizeof(f));for (itn i=1;i<=n;i++)cin >> c[i];sort(c+1,c+n+1);f[0] = 0;for (int i=1;i<=m;i++){for (int j=1;j<=n;j++){if (i<c[j])break;f[i] = min(f[i],f[i-c[j]]+1);}}cout << (f[m]==0x3f3f3f3f?-1:f[m]);return 0;
}

依旧是枚举每个硬币的价值

取当前硬币以外组成的最小方式比较。

http://www.lryc.cn/news/373191.html

相关文章:

  • 堆栈溢出的攻击 -fno-stack-protector stack smash 检测
  • 掌握特劳特定位理论核心,明晰企业战略定位之重
  • RAGFlow 学习笔记
  • 使用Docker-Java监听Docker容器的信息
  • Spring Boot + Mybatis Plus实现登录注册
  • IDEA创建web项目
  • 二手物品交易系统的设计
  • 探索大数据在信用评估中的独特价值
  • MFC基础学习应用
  • Gradle实现类似Maven的profiles功能
  • 【强化学习】gymnasium自定义环境并封装学习笔记
  • TLE9879的基于Arduino调试板SWD刷写接口
  • 基于 Delphi 的前后端分离:之五,使用 HTMX 让页面元素组件化之面向对象的Delphi代码封装
  • 讲透计算机网络知识(实战篇)01——计算机网络和协议
  • 8个宝藏APP,个个都牛逼哈拉!
  • 使用docker构建java应用
  • Oracle 存储过程
  • 下载站名文件
  • 345453
  • Java操作redis
  • 【数据结构(邓俊辉)学习笔记】图03——拓扑排序
  • C#参数使用场景简要说明
  • 线性代数|机器学习-P10最小二乘法的四种方案
  • 【Android面试八股文】你能描述一下JVM中的类加载过程吗?
  • MYSQL八、MYSQL的SQL优化
  • 鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS
  • 【ARMv8/ARMv9 硬件加速系列 3 -- SVE 指令语法及编译参数详细介绍】
  • Java版+ SaaS应用+接口技术RESTful API 技术开发的智慧医院HIS系统源码 专注医院管理系统研发 支持二开
  • 工业机器人远程运维,增强智慧工厂运营管理
  • 理解Python的元类