动态规划,二维DP

文章目录

  • 1、摆花
  • 2、异或选数
  • 3、数字三角形

1、摆花

在这里插入图片描述
分析:
输入2 4 3 2 的情况下,只有 (2,2) , (3,1) 这两种方案。
所以,设置状态 dp[i][j] 表示到第 i 种花(共 n 种花)、第 j 个位置(共 m 个位置)的情况下的总方案数。
在这里插入图片描述
k 表示 第 i 种花使用的数量,a[i] 表示第 i 种花本来的数量。

示例代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll p = 1e6+7 , N = 1e3+5;
ll a[N],dp[N][N]; 
int n,m; 
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];dp[0][0]=1;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=a[i]&&k<=j;k++)// k<=j 避免花数过多,超过了j(余下的位置)dp[i][j]=(dp[i][j]+dp[i-1][j-k])%p;}}cout<<dp[n][m];return 0;
}

2、异或选数

在这里插入图片描述
分析:
有多少个子序列进行异或可以得到x。
设状态 dp[i][j] 表示到第 i 个数字(共n个)、异或和为 j 的子序列的个数。
对于每次的状态有选择这个数 和 不选择 这两种情况。
dp[i][j] = dp[i-1][j] + dp[i-1][j^a[i]]

代码示例:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5,p = 998244353;
int a[N],dp[N][70],n,x; 
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>x;for(int i=1;i<=n;i++)cin>>a[i];dp[0][0]=1;for(int i=1;i<=n;i++){for(int j=0;j<64;j++){//a[i]<=63,所以异或结果肯定不会大于64dp[i][j]=(dp[i-1][j]+dp[i-1][j^a[i]])%p;}}cout<<dp[n][x];return 0;
}

3、数字三角形

在这里插入图片描述
分析:

设置 dp[i][j][k] 表示从(i,j)出发一共进行了 k 次右移,n-i-k次左移。
dp[i][j][k] = a[i][j] + max(dp[i+1][j][k],dp[i+1][j+1][k-1])

代码示例:

#include<bits/stdc++.h>
using namespace std;
const int N = 1e2+5;
int a[N][N],dp[N][N][N];
int n;
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)cin>>a[i][j];for(int i=n;i>=1;i--){for(int j=1;j<=i;j++){for(int k=0;k<=n-i;k++){if(k>=1)dp[i][j][k]=a[i][j]+max(dp[i+1][j][k],dp[i+1][j+1][k-1]);else dp[i][j][k]=a[i][j]+dp[i+1][j][k];}}}if(n&1)cout<<dp[1][1][(n-1)/2];else cout<<max(dp[1][1][(n-1)/2],dp[1][1][n-1-(n-1)/2]);	return 0;
}

DFS暴力解决,只能过50%,oi赛制的蓝桥杯还是能骗分的,如果用dp的话,可能根本就想不到

#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+5;
int a[N][N],note[N];
int n;
int maxsum;
void dfs(int x,int left,int right){if(x==n){if(abs(left-right)>1)return;note[x]=a[x][1+right];// 第 x 个 int sum=0;for(int i=1;i<=n;i++)sum+=note[i]; if(sum>maxsum)maxsum=sum;return;}note[x]=a[x][right+1];// 第x行,第right+1个 dfs(x+1,left+1,right);// 向下移动 left+1 dfs(x+1,left,right+1);// 向左移动 right+1 
}
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n;for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)cin>>a[i][j];dfs(1,0,0);cout<<maxsum;		return 0;
}

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

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

相关文章

python开发——Python函数中的函数传参

前言 在编写函数时&#xff0c;经常希望函数接口更加灵活&#xff0c;可以支持默认参数、可变参数、关键字参数等特性。下面将详细介绍这些函数传参的使用方法。 1. 常规参数 在 Python 中&#xff0c;函数的传参是一种简单直接的过程&#xff0c;例如&#xff1a; def tes…

Leetcode算法题笔记(2)

目录 图论51. 岛屿数量解法一 52. 腐烂的橘子解法一 53. 课程表解法一 54. 实现 Trie (前缀树)解法一 回溯55. 全排列解法一 56. 子集解法一解法二 57. 电话号码的字母组合解法一 58. 组合总和解法一解法二 59. 括号生成解法一解法二 60. 单词搜索解法一 61. 分割回文串解法一 …

能否把 Redis 当做消息队列来用呢?

这个问题并不是面试中经常会问到的问题&#xff0c;而是我在平时看一些大牛写的技术文章的时候看到的一个问题&#xff0c;这个问题引发了我强烈的思考&#xff0c;我感觉我想通了这个问题之后&#xff0c;对redis和kafka都有了一个全新的认识&#xff0c;感觉像发现了新大陆这…

简明 Python 教程(第6章 模块)

模块是Python中组织代码的一种方式&#xff0c;它允许开发者将代码分解为可重用的单元&#xff0c;便于管理和维护。开发者可以有效地利用Python的模块系统来构建复杂的应用程序。模块是一个包含Python定义和声明的文件&#xff0c;文件名就是模块名加上.py扩展名。模块可以包含…

python的数据容器通用操作

常用方法 len统计个数 max最大元素 min最小元素 my_list[1,2,3,4,5] my_tuple(1,2,3,4,5) my_str"abcdefg" my_set{1,2,3,4,5} my_dict{"key1":1,"kye2":2,"key3":3,"key4":4,"key5":5}print(f"列表 元素个…

[Netty实践] 请求响应同步实现

目录 一、介绍 二、依赖引入 三、公共部分实现 四、server端实现 五、client端实现 六、测试 一、介绍 本片文章将实现请求响应同步&#xff0c;什么是请求响应同步呢&#xff1f;就是当我们发起一个请求时&#xff0c;希望能够在一定时间内同步&#xff08;线程阻塞&am…

FPGA高端项目:解码索尼IMX327 MIPI相机转HDMI输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言2、相关方案推荐本博主所有FPGA工程项目-->汇总目录我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存HDMI输出工程源码架构 6、工程源码…

Java中SPI机制简单演示

Java中SPI机制简单演示 写一个SpiService接口 public interface SpiService {void run();}写两个实现类&#xff0c;注意&#xff1a;实现类可以跨包 Slf4j public class SpiServiceImpl1 implements SpiService {Overridepublic void run() {log.warn("SpiServiceImpl…

简单破除github的2FA验证

简单破除github的2FA验证 文章目录 简单破除github的2FA验证&#x1f468;‍&#x1f3eb;Authenticator工具 &#x1f468;‍&#x1f3eb;Authenticator工具 最近使用github的时候发现要搞一个2FA的验证才可以 验证的途径有两种&#xff1a;一种是用手机电话验证&#xff0c;…

使用easyYapi生成文档

easyYapi生成文档 背景1.安装配置1.1 介绍1.2 安装1.3 配置1.3.1 Export Postman1.3.2 Export Yapi1.3.3 Export Markdown1.3.4 Export Api1.3.6 常见问题补充 2. java注释规范2.1 接口注释规范2.2 出入参注释规范 3. 特定化支持3.1 必填校验3.2 忽略导出3.3 返回不一致3.4 设置…

关于JavaScript常用命令

JS&#xff08;JavaScript&#xff09;是一种用于构建交互式网页的脚本语言&#xff0c;常用于前端开发。以下是一些常用的JS命令及其简要说明&#xff0c;希望能够帮助您更好地了解JS的基础知识。 1. **变量声明与赋值** - var, let, const: 用于声明变量&#xff0c;var在…

第二证券|高速连接概念再度活跃,沃尔核材5日涨近60%,胜蓝股份等走高

高速连接概念26日盘中再度走强&#xff0c;到发稿&#xff0c;胜蓝股份涨超13%&#xff0c;沃尔核材涨停&#xff0c;华丰科技、奥飞数据涨超5%。 值得注意的是&#xff0c;沃尔核材近5个交易日已收成4个涨停板&#xff0c;累计大涨近60%。公司近来在投资者互动平台表示&#…

Disruptor消费线程等待策略

以下按等待最快到最慢策略排序 BusySpinWaitStrategy BusySpinWaitStrategy相当于while(true)不停的轮询&#xff0c;跑动起来会迅速把CPU打满&#xff0c;适合延迟要求苛刻的业务场景&#xff0c;但是缺点是非常吃CPU YieldingWaitStrategy 轮询完成使用yield函数让出CPU资…

宽光谱SOA光芯片设计(一)

-本文翻译自由Geoff H. Darling于2003年撰写的文章。尽管文章较早&#xff0c;但可以了解一些SOA底层原理&#xff0c;并可看到早期SOA研究的思路和过程&#xff0c;于今仍有很高借鉴价值。 摘要 本文介绍一种新型宽光谱半导体光放大器&#xff08;SOA&#xff09;技术&#x…

【数据分享】中国土壤有机质数据集(免费获取)

中国土壤有机质数据集对于农业、生态环境保护等领域具有重要意义。通过对土壤有机质等多项指标的统计和分析&#xff0c;可以更好地了解土壤的特性&#xff0c;指导合理的土壤管理和保护措施的制定&#xff0c;从而促进农业生产的可持续发展&#xff0c;并为生态环境保护提供科…

数据结构与算法之美学习笔记:《数据结构与算法之美》学习指导手册

目录 前言 前言 本节课程思维导图&#xff1a; 在设计专栏内容的时候&#xff0c;为了兼顾不同基础的同学&#xff0c;我在内容上做到了难易结合&#xff0c;既有简单的数组、链表、栈、队列这些基础内容&#xff0c;也有红黑树、BM、KMP 这些难度较大的算法。但是&#xff0c;…

利用云手机高效运营多个海外社媒账户

随着全球化进程的不断推进&#xff0c;中国出海企业和B2B外贸企业日益重视海外社媒营销&#xff0c;将其视为抢占市场份额的关键策略。在海外社媒营销中&#xff0c;企业通常会在多个平台上批量开通账户&#xff0c;搭建自己的社媒内容矩阵。本文将会介绍如何用云手机高效运营多…

格雷希尔G25F系列快速接头,在新能源电池包气密性测试时的各种电气接插件的应用

一些大的新能源电池制造商如&#xff1a;比亚迪、宁德时代、国轩高科、亿纬锂能、东方时代等&#xff0c;在全球的新能源电池市场上占据着重要的地位。新能源PACK电池包在生产时&#xff0c;需要经过一些严苛的测试&#xff0c;用以检测产品的品质是否达到合格标准&#xff0c;…

基于React的低代码平台开发实践

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;在线地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

宝塔设置限制ip后,ip改了之后 ,登陆不上了

前言 今天作死&#xff0c;在宝塔面板设置界面&#xff0c;将访问面板的ip地址限制成只有自己电脑的ip才能访问&#xff0c;修改之后直接人傻了&#xff0c;“403 forbidden”。吓得我直接网上一通搜索&#xff0c;还好&#xff0c;解决方法非常简单。 解决方法 打开ssh客户…