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

数据结构与算法:动态规划中根据数据量猜解法

前言

这个说是算法竞赛里最重要的技巧也不为过。

一、打 怪 兽

#include<bits/stdc++.h>
using namespace std;//当money数据范围不大时,dp[i][j]为通过前i个怪兽,最多花j元钱的最大能力值
void solve1()
{int n;cin>>n;vector<int>power(n+1);vector<int>money(n+1);int sum=0;for(int i=1;i<=n;i++){cin>>power[i]>>money[i];sum+=money[i];}vector<vector<int>>dp(n+1,vector<int>(sum+1));for(int i=1;i<=n;i++){for(int j=0;j<=sum;j++){dp[i][j]=INT_MIN;//不贿赂if(dp[i-1][j]>=power[i]){dp[i][j]=dp[i-1][j];}//能贿赂且之前能通过if(j-money[i]>=0&&dp[i-1][j-money[i]]!=INT_MIN){dp[i][j]=max(dp[i][j],dp[i-1][j-money[i]]+power[i]);}}}//检查最后一行第一个能通过的答案for(int j=0;j<=sum;j++){if(dp[n][j]!=INT_MIN){cout<<j;return ;}}}//当power数据范围不大时,dp[i][j]为通过前i个怪兽,能力值正好为j的最小钱
//内存超限!!!
void solve2()
{int n;cin>>n;vector<int>power(n+1);vector<int>money(n+1);int sum=0;for(int i=1;i<=n;i++){cin>>power[i]>>money[i];sum+=power[i];}vector<vector<int>>dp(n+1,vector<int>(sum+1));//初始化for(int j=1;j<=sum;j++){dp[0][j]=INT_MAX;}for(int i=1;i<=n;i++){for(int j=0;j<=sum;j++){dp[i][j]=INT_MAX;//不贿赂if(j>=power[i]&&dp[i-1][j]!=INT_MAX){dp[i][j]=dp[i-1][j];}//贿赂if(j>=power[i]&&dp[i-1][j-power[i]]!=INT_MAX){dp[i][j]=min(dp[i][j],dp[i-1][j-power[i]]+money[i]);}}}int ans=INT_MAX;for(int j=0;j<=sum;j++){if(dp[n][j]!=INT_MAX){ans=min(ans,dp[n][j]);}}cout<<ans;
}int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);solve1();return 0;
}</
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/231719.html

相关文章:

  • 如何应对敏捷转型中的团队阻力
  • 题海拾贝:P2347 [NOIP 1996 提高组] 砝码称重
  • CSP is what?
  • 电路设计基础-2
  • unix/linux,sudo,其基本概念、定义、性质、定理
  • UCRT 和 MSVC 的区别(Windows 平台上 C/C++ 开发相关)
  • WES7系统深度定制全流程详解(从界面剥离到工业部署)
  • Java 2D 图形变换方法
  • Cocos creator游戏开发面试题
  • 分享一颗PD协议芯片(取电sink芯片),ECP5701输入电压3V-28V
  • COMSOL与MATLAB联合仿真人工智能的电学层析成像系统
  • Visual Studio C++ 调试日志与异常定位指南
  • 一则systemctl service诡异问题
  • PWM 相关知识整理
  • 【趣味Html】第11课:动态闪烁发光粒子五角星
  • #Java篇:学习node后端之sql常用操作
  • 解决docker运行zentao 报错:ln: failed to create symbolic link ‘/opt/zbox/tmp/mysq
  • 双栈共享一个栈空间
  • 小黑黑日常积累:dataclass的简单使用
  • 高效使用AI大模型:测试工程师提示词编写框架
  • [Java 基础]面向对象-继承
  • 【el-progress】element UI 进度条组件
  • 时间序列预测:LSTM与Prophet对比实验
  • Spring AI Tool Calling
  • 深入解析Java17核心新特性(密封类、模式匹配增强、文本块)
  • C++ 变量三
  • 前端八股之JS的原型链
  • 项目实战——C语言扫雷游戏
  • MySQL ACID 面试深度解析:原理、实现与面试实战
  • SARIMA时间序列分析:三大模型对比